diff --git "a/public/articles/\\\".html" "b/public/articles/\\\".html" deleted file mode 100644 index d659db7..0000000 --- "a/public/articles/\\\".html" +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git "a/public/better-listview-express/\\\".html" "b/public/better-listview-express/\\\".html" deleted file mode 100644 index 6386908..0000000 --- "a/public/better-listview-express/\\\".html" +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/better-listview-express/releases?since=3.14.0.html b/public/better-listview-express/releases?since=3.14.0.html deleted file mode 100644 index 89ba94d..0000000 --- a/public/better-listview-express/releases?since=3.14.0.html +++ /dev/null @@ -1,592 +0,0 @@ - - - - - - - - - - - - - - - -Better ListView .NET control: Improved List View control for C# and VB.NET (Windows Forms) - - - - - - - -
- - - -
- - - -
- - - -
-
-
-

Better ListView Express edition: Free .NET listview control

- - - -
- -
- - - - - - - - - -
- -
- -
- Free Download - -

Version 3.15 / May 27, 2015

-
- -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - - - - - -
- Share this page if you like it: -
- -
-
- - - - -
- -
- -
- -
- -
- - -
-
- - - - - -
- - - - - - - - - - \ No newline at end of file diff --git a/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1285.html b/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1285.html deleted file mode 100644 index c82304e..0000000 --- a/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1285.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -Better ListView Tip: How to Draw Custom Selection « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Better ListView Tip: How to Draw Custom Selection

- - - -
-
Customized item selection.

Customized item selection.

-

 

-

By default, Better ListView uses system theme for drawing selections.

-

To draw custom selection, you can use owner drawing capabilities of Better ListView:

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-class CustomListView : BetterListView
-{
- protected override void OnDrawItemBackground(BetterListViewDrawItemBackgroundEventArgs eventArgs)
- {
- base.OnDrawItemBackground(eventArgs);

-

if (eventArgs.Item.Selected)
- {
- Brush brushSelection = new SolidBrush(Color.FromArgb(128, Color.LightGreen));
- eventArgs.Graphics.FillRectangle(brushSelection, eventArgs.ItemBounds.BoundsSelection);
- brushSelection.Dispose();
- }
- }

-

protected override void OnDrawItem(BetterListViewDrawItemEventArgs eventArgs)
- {
- eventArgs.DrawSelection = false;

-

base.OnDrawItem(eventArgs);

-

if (eventArgs.Item.Selected)
- {
- eventArgs.Graphics.DrawRectangle(Pens.DarkGreen, eventArgs.ItemBounds.BoundsSelection);
- }
- }
-}
-[/csharp]

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-Class CustomListView
- Inherits BetterListView
- Protected Overrides Sub OnDrawItemBackground(eventArgs As BetterListViewDrawItemBackgroundEventArgs)
- MyBase.OnDrawItemBackground(eventArgs)

-

If eventArgs.Item.Selected Then
- Dim brushSelection As Brush = New SolidBrush(Color.FromArgb(128, Color.LightGreen))
- eventArgs.Graphics.FillRectangle(brushSelection, eventArgs.ItemBounds.BoundsSelection)
- brushSelection.Dispose()
- End If
- End Sub

-

Protected Overrides Sub OnDrawItem(eventArgs As BetterListViewDrawItemEventArgs)
- eventArgs.DrawSelection = False

-

MyBase.OnDrawItem(eventArgs)

-

If eventArgs.Item.Selected Then
- eventArgs.Graphics.DrawRectangle(Pens.DarkGreen, eventArgs.ItemBounds.BoundsSelection)
- End If
- End Sub
-End Class
-[/vb]

-

In the above code, we have created class CustomListView that inherits from BetterListView. We override OnDrawItemBackground and OnDrawItem methods to customize item background and item foreground drawing, respectively.

-

The OnDrawItemBackground method contains only check for whether the item is selected. If so, we draw selection background (filled rectangle in selection area).

-

The OnDrawItem method contains two things:

-
    -
  1. Turn off  default selection.
  2. -
  3. Draw custom selection border if the item is selected.
  4. -
-

Drawbacks of drawing custom selections like this include using non-system theme, which can look ugly on various color schemes. By default, Better ListView always use the system theme, so the color consistency is ensured. You can, however, still use classes like SystemColors or SystemBrushes to ensure good look.

-

Another drawback is that you handle only two states of selection, i.e. selected and unselected state. This is sufficient for Classic Windows theme but there are several more states used on Windows Aero Theme, like “hot”, “focused and hot” or “hot and pressed”.

-

To allow these states, considerable coding need to be done.

-

In case you need this level of customization, please contact us for Custom Coding support.

-

 

- -
- - - - -
- - - - - -

2 Responses to “Better ListView Tip: How to Draw Custom Selection”

- -
    -
  1. -
    -
    - Claudiu says:
    - - - -

    Better list view is only for stupid developers and plase do not compare it with standard list view. Performance is an important think and betterlistview has no performance compared with list view. Make an loop with 100000 items for add to list and you will see ….

    - - -
    -
      -
    • -
      -
      - Libor Tinka says:
      - - - -

      We have balanced performance with features, this is a price for having fully managed control with rich features (tree items, multi-line text). If you want something extremely fast, faster than ListView, handling 100 000 000 items like a charm … use DOS text mode! :)

      -

      We have happy customers who use Better ListView in complex systems like airline ticket booking and they are very intelligent people – I don’t think they are stupid developers.

      - - -
      -
    • -
    -
  2. -
- - - - - -
- -

Leave a Reply to Claudiu

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1286.html b/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1286.html deleted file mode 100644 index ea01dec..0000000 --- a/public/blog/better-listview-tip-how-to-draw-custom-selection/index.html?replytocom=1286.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -Better ListView Tip: How to Draw Custom Selection « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Better ListView Tip: How to Draw Custom Selection

- - - -
-
Customized item selection.

Customized item selection.

-

 

-

By default, Better ListView uses system theme for drawing selections.

-

To draw custom selection, you can use owner drawing capabilities of Better ListView:

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-class CustomListView : BetterListView
-{
- protected override void OnDrawItemBackground(BetterListViewDrawItemBackgroundEventArgs eventArgs)
- {
- base.OnDrawItemBackground(eventArgs);

-

if (eventArgs.Item.Selected)
- {
- Brush brushSelection = new SolidBrush(Color.FromArgb(128, Color.LightGreen));
- eventArgs.Graphics.FillRectangle(brushSelection, eventArgs.ItemBounds.BoundsSelection);
- brushSelection.Dispose();
- }
- }

-

protected override void OnDrawItem(BetterListViewDrawItemEventArgs eventArgs)
- {
- eventArgs.DrawSelection = false;

-

base.OnDrawItem(eventArgs);

-

if (eventArgs.Item.Selected)
- {
- eventArgs.Graphics.DrawRectangle(Pens.DarkGreen, eventArgs.ItemBounds.BoundsSelection);
- }
- }
-}
-[/csharp]

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-Class CustomListView
- Inherits BetterListView
- Protected Overrides Sub OnDrawItemBackground(eventArgs As BetterListViewDrawItemBackgroundEventArgs)
- MyBase.OnDrawItemBackground(eventArgs)

-

If eventArgs.Item.Selected Then
- Dim brushSelection As Brush = New SolidBrush(Color.FromArgb(128, Color.LightGreen))
- eventArgs.Graphics.FillRectangle(brushSelection, eventArgs.ItemBounds.BoundsSelection)
- brushSelection.Dispose()
- End If
- End Sub

-

Protected Overrides Sub OnDrawItem(eventArgs As BetterListViewDrawItemEventArgs)
- eventArgs.DrawSelection = False

-

MyBase.OnDrawItem(eventArgs)

-

If eventArgs.Item.Selected Then
- eventArgs.Graphics.DrawRectangle(Pens.DarkGreen, eventArgs.ItemBounds.BoundsSelection)
- End If
- End Sub
-End Class
-[/vb]

-

In the above code, we have created class CustomListView that inherits from BetterListView. We override OnDrawItemBackground and OnDrawItem methods to customize item background and item foreground drawing, respectively.

-

The OnDrawItemBackground method contains only check for whether the item is selected. If so, we draw selection background (filled rectangle in selection area).

-

The OnDrawItem method contains two things:

-
    -
  1. Turn off  default selection.
  2. -
  3. Draw custom selection border if the item is selected.
  4. -
-

Drawbacks of drawing custom selections like this include using non-system theme, which can look ugly on various color schemes. By default, Better ListView always use the system theme, so the color consistency is ensured. You can, however, still use classes like SystemColors or SystemBrushes to ensure good look.

-

Another drawback is that you handle only two states of selection, i.e. selected and unselected state. This is sufficient for Classic Windows theme but there are several more states used on Windows Aero Theme, like “hot”, “focused and hot” or “hot and pressed”.

-

To allow these states, considerable coding need to be done.

-

In case you need this level of customization, please contact us for Custom Coding support.

-

 

- -
- - - - -
- - - - - -

2 Responses to “Better ListView Tip: How to Draw Custom Selection”

- -
    -
  1. -
    -
    - Claudiu says:
    - - - -

    Better list view is only for stupid developers and plase do not compare it with standard list view. Performance is an important think and betterlistview has no performance compared with list view. Make an loop with 100000 items for add to list and you will see ….

    - - -
    -
      -
    • -
      -
      - Libor Tinka says:
      - - - -

      We have balanced performance with features, this is a price for having fully managed control with rich features (tree items, multi-line text). If you want something extremely fast, faster than ListView, handling 100 000 000 items like a charm … use DOS text mode! :)

      -

      We have happy customers who use Better ListView in complex systems like airline ticket booking and they are very intelligent people – I don’t think they are stupid developers.

      - - -
      -
    • -
    -
  2. -
- - - - - -
- -

Leave a Reply to Libor Tinka

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/better-thumbnail-browser-component-released/index.html?replytocom=1289.html b/public/blog/better-thumbnail-browser-component-released/index.html?replytocom=1289.html deleted file mode 100644 index 0d59fa0..0000000 --- a/public/blog/better-thumbnail-browser-component-released/index.html?replytocom=1289.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -Better Thumbnail Browser Component Released « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Better Thumbnail Browser Component Released

- - - -
-

 

-

We have released a whole new WinForms component called Better Thumbnail Browser. This control is useful for anyone developing photo management software or any kind of image database:

-
Better Thumbnail Browser Overview

Better Thumbnail Browser Overview

-

The control is capable of loading image thumbnails on background and does all the dirty job of threading and synchronization for you.

-

My motivation to make such component as lead developer at ComponentOwl.com was to have something that can smoothly integrate in my photo management software.

-

Since we already have Better ListView component, which is quite mature (three major releases over two years of development), I decided to build upon it and finally make control for image thumbnails that is both extensible and powerful and have native look and feel.

-

Better Thumbnail Browser inherits most of its functionality from Better ListView (multi column sorting, custom paddings and spacings, multi-line text and groups to name a few). It adds image loading logic on top of it, which can handle various scenarios:

-
    -
  • Load images from a folder, database or custom source automatically
  • -
  • Load thumbnails with arbitrary sizes on background while progressively displaying them
  • -
  • Handle zooming thumbnails on the fly
  • -
  • Loading thumbnail items in multiple passes (e.g. load meta-data, then low quality image, then high quality image)
  • -
  • Loading thumbnails in custom order
  • -
  • Loading visible thumbnails first, then all other (and do this even though the user is scrolling the view)
  • -
  • Manage updating individual thumbnails or their count on the fly
  • -
  • Support showing loading progress
  • -
-

The component is fully customizable and by default inherits native Windows theme. We tested it on Windows 8 with success:

-
Better Thumbnail Browser with Windows 8 Theme

Better Thumbnail Browser with Windows 8 Theme

-

 

-

Better Thumbnail Browser contains default implementation for loading thumbnail images from disk. If you want to gather all images from a given folder (say “c:\images”), display them in Better Thumbnail Browser and load them on background, the code is particularly simple:

-
thumbnailBrowser.Path = "c:\\images";
-

And that’s it!

-

Better Thumbnail Browser will be our third component which is used in end-user consumer-level software package. This ensures future development, improvements and support.

-

 

-

 

- -
- - - - -
- - - - - -

One Response to “Better Thumbnail Browser Component Released”

- -
    -
  1. -
    -
    - Nathaniel Wise says:
    - - - -

    this is one useful for the example and overviews.in my website i m not used this type of functionality but this is something good component.

    - - -
    -
  2. -
- - - - - -
- -

Leave a Reply to Nathaniel Wise

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1340.html b/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1340.html deleted file mode 100644 index b64a8d7..0000000 --- a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1340.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - -Custom Scroll Bar Size in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Custom Scroll Bar Size in Better ListView

- - - -
-
Better ListView custom scroll bar size

Better ListView custom scroll bar size

-

Better ListView 3.7.0 contains two new properties that allow you to set custom horizontal and vertical scroll bar sizes:

-
    -
  • HScrollBarWidth
  • -
  • VScrollBarHeight
  • -
-

Of course, you can set these custom sizes in design-time as well as in run-time.

-

Larger scroll bars are practical on modern touch-enabled devices with high resolution screens. The default scroll bar size (17 pixels) may be too small and you may want to make it just large enough for your index finger.

-

This features works in both Better ListView and Better ListView Express.

-

 

-

 

-

 

-

 

- -
- - - - -
- - - - - -

4 Responses to “Custom Scroll Bar Size in Better ListView”

- -
    -
  1. - - -
  2. -
  3. -
    -
    - Dan says:
    - - - -

    Can you change the button height as this would make it a great option for touch screen apps.

    - - -
    - -
  4. -
- - - - - -
- -

Leave a Reply to brokey

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1344.html b/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1344.html deleted file mode 100644 index f20b5c9..0000000 --- a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1344.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - -Custom Scroll Bar Size in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Custom Scroll Bar Size in Better ListView

- - - -
-
Better ListView custom scroll bar size

Better ListView custom scroll bar size

-

Better ListView 3.7.0 contains two new properties that allow you to set custom horizontal and vertical scroll bar sizes:

-
    -
  • HScrollBarWidth
  • -
  • VScrollBarHeight
  • -
-

Of course, you can set these custom sizes in design-time as well as in run-time.

-

Larger scroll bars are practical on modern touch-enabled devices with high resolution screens. The default scroll bar size (17 pixels) may be too small and you may want to make it just large enough for your index finger.

-

This features works in both Better ListView and Better ListView Express.

-

 

-

 

-

 

-

 

- -
- - - - -
- - - - - -

4 Responses to “Custom Scroll Bar Size in Better ListView”

- -
    -
  1. - - -
  2. -
  3. -
    -
    - Dan says:
    - - - -

    Can you change the button height as this would make it a great option for touch screen apps.

    - - -
    - -
  4. -
- - - - - -
- -

Leave a Reply to Dan

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1345.html b/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1345.html deleted file mode 100644 index 0311e7c..0000000 --- a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1345.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - -Custom Scroll Bar Size in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Custom Scroll Bar Size in Better ListView

- - - -
-
Better ListView custom scroll bar size

Better ListView custom scroll bar size

-

Better ListView 3.7.0 contains two new properties that allow you to set custom horizontal and vertical scroll bar sizes:

-
    -
  • HScrollBarWidth
  • -
  • VScrollBarHeight
  • -
-

Of course, you can set these custom sizes in design-time as well as in run-time.

-

Larger scroll bars are practical on modern touch-enabled devices with high resolution screens. The default scroll bar size (17 pixels) may be too small and you may want to make it just large enough for your index finger.

-

This features works in both Better ListView and Better ListView Express.

-

 

-

 

-

 

-

 

- -
- - - - -
- - - - - -

4 Responses to “Custom Scroll Bar Size in Better ListView”

- -
    -
  1. - - -
  2. -
  3. -
    -
    - Dan says:
    - - - -

    Can you change the button height as this would make it a great option for touch screen apps.

    - - -
    - -
  4. -
- - - - - -
- -

Leave a Reply to Libor Tinka

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1346.html b/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1346.html deleted file mode 100644 index cd6fef4..0000000 --- a/public/blog/custom-scroll-bar-size-in-better-listview/index.html?replytocom=1346.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - -Custom Scroll Bar Size in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Custom Scroll Bar Size in Better ListView

- - - -
-
Better ListView custom scroll bar size

Better ListView custom scroll bar size

-

Better ListView 3.7.0 contains two new properties that allow you to set custom horizontal and vertical scroll bar sizes:

-
    -
  • HScrollBarWidth
  • -
  • VScrollBarHeight
  • -
-

Of course, you can set these custom sizes in design-time as well as in run-time.

-

Larger scroll bars are practical on modern touch-enabled devices with high resolution screens. The default scroll bar size (17 pixels) may be too small and you may want to make it just large enough for your index finger.

-

This features works in both Better ListView and Better ListView Express.

-

 

-

 

-

 

-

 

- -
- - - - -
- - - - - -

4 Responses to “Custom Scroll Bar Size in Better ListView”

- -
    -
  1. - - -
  2. -
  3. -
    -
    - Dan says:
    - - - -

    Can you change the button height as this would make it a great option for touch screen apps.

    - - -
    - -
  4. -
- - - - - -
- -

Leave a Reply to Libor Tinka

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1280.html b/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1280.html deleted file mode 100644 index 424fd12..0000000 --- a/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1280.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - -Customize Label Editing (Embedded) Control for Each Line in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Customize Label Editing (Embedded) Control for Each Line in Better ListView

- - - -
-

Embedded controls for label edit in Better ListView can be customized not only for every column, but even for every row.

-

This is not a new feature, but would be nice to mention that you can possibly have a different custom editing control for every cell…

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-private IBetterListViewEmbeddedControl ListViewRequestEmbeddedControl(object sender, BetterListViewRequestEmbeddedControlEventArgs eventArgs)
-{
- // show editing controls in the second column
- if (eventArgs.SubItem.Index == 1)
- {
- // show my custom control on the first row
- if (eventArgs.SubItem.Item.Index == 0)
- {
- return (new DocumentAccessConrol());
- }

-

// show my custom control on the second row
- if (eventArgs.SubItem.Item.Index == 1)
- {
- return (new BetterListViewComboBoxEmbeddedControl());
- }

-

// show my custom control on the third row
- if (eventArgs.SubItem.Item.Index == 2)
- {
- return (new BetterListViewTextBoxEmbeddedControl());
- }
- }

-

return null;
-}
-[/csharp]

-

 

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-Private Function ListViewRequestEmbeddedControl(ByVal sender As Object, ByVal eventArgs As BetterListViewRequestEmbeddedControlEventArgs) _
- As IBetterListViewEmbeddedControl

-

‘ show editing controls in the second column
- If eventArgs.SubItem.Index = 1 Then

-

‘ show my custom control on the first row
- If eventArgs.SubItem.Item.Index = 0 Then
- Return (New DocumentAccessConrol())
- End If

-

‘ show my custom control on the second row
- If eventArgs.SubItem.Item.Index = 1 Then
- Return (New BetterListViewComboBoxEmbeddedControl())
- End If

-

‘ show my custom control on the third row
- If eventArgs.SubItem.Item.Index = 2 Then
- Return (New BetterListViewTextBoxEmbeddedControl())
- End If

-

End If

-

Return Nothing

-

End Function
-[/vb]

-

 

-

And there is the result:

-
Custom Embedded Control on the First Line

Custom Embedded Control on the First Line

-

 

-
TextBox Control on the Third Line

TextBox Control on the Third Line

- -
- - - - -
- - - - - -

2 Responses to “Customize Label Editing (Embedded) Control for Each Line in Better ListView”

- -
    -
  1. -
    -
    - Göran says:
    - - - -

    There is a tiny error in the VB code below “‘ show my custom control on the third row”.
    -The index should be “2”, not “0”.

    -

    :-)

    -

    Thanks for a great product and for a great and humorous site!

    -

    /G

    - - -
    - -
  2. -
- - - - - -
- -

Leave a Reply to Göran

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1281.html b/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1281.html deleted file mode 100644 index e934b25..0000000 --- a/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/index.html?replytocom=1281.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - -Customize Label Editing (Embedded) Control for Each Line in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Customize Label Editing (Embedded) Control for Each Line in Better ListView

- - - -
-

Embedded controls for label edit in Better ListView can be customized not only for every column, but even for every row.

-

This is not a new feature, but would be nice to mention that you can possibly have a different custom editing control for every cell…

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-private IBetterListViewEmbeddedControl ListViewRequestEmbeddedControl(object sender, BetterListViewRequestEmbeddedControlEventArgs eventArgs)
-{
- // show editing controls in the second column
- if (eventArgs.SubItem.Index == 1)
- {
- // show my custom control on the first row
- if (eventArgs.SubItem.Item.Index == 0)
- {
- return (new DocumentAccessConrol());
- }

-

// show my custom control on the second row
- if (eventArgs.SubItem.Item.Index == 1)
- {
- return (new BetterListViewComboBoxEmbeddedControl());
- }

-

// show my custom control on the third row
- if (eventArgs.SubItem.Item.Index == 2)
- {
- return (new BetterListViewTextBoxEmbeddedControl());
- }
- }

-

return null;
-}
-[/csharp]

-

 

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-Private Function ListViewRequestEmbeddedControl(ByVal sender As Object, ByVal eventArgs As BetterListViewRequestEmbeddedControlEventArgs) _
- As IBetterListViewEmbeddedControl

-

‘ show editing controls in the second column
- If eventArgs.SubItem.Index = 1 Then

-

‘ show my custom control on the first row
- If eventArgs.SubItem.Item.Index = 0 Then
- Return (New DocumentAccessConrol())
- End If

-

‘ show my custom control on the second row
- If eventArgs.SubItem.Item.Index = 1 Then
- Return (New BetterListViewComboBoxEmbeddedControl())
- End If

-

‘ show my custom control on the third row
- If eventArgs.SubItem.Item.Index = 2 Then
- Return (New BetterListViewTextBoxEmbeddedControl())
- End If

-

End If

-

Return Nothing

-

End Function
-[/vb]

-

 

-

And there is the result:

-
Custom Embedded Control on the First Line

Custom Embedded Control on the First Line

-

 

-
TextBox Control on the Third Line

TextBox Control on the Third Line

- -
- - - - -
- - - - - -

2 Responses to “Customize Label Editing (Embedded) Control for Each Line in Better ListView”

- -
    -
  1. -
    -
    - Göran says:
    - - - -

    There is a tiny error in the VB code below “‘ show my custom control on the third row”.
    -The index should be “2”, not “0”.

    -

    :-)

    -

    Thanks for a great product and for a great and humorous site!

    -

    /G

    - - -
    - -
  2. -
- - - - - -
- -

Leave a Reply to Libor Tinka

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/enabling-search-highlight-in-better-listview/index.html?replytocom=1290.html b/public/blog/enabling-search-highlight-in-better-listview/index.html?replytocom=1290.html deleted file mode 100644 index 91e3089..0000000 --- a/public/blog/enabling-search-highlight-in-better-listview/index.html?replytocom=1290.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - -Enabling Search Highlight in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Enabling Search Highlight in Better ListView

- - - -
-

We have improved item searching capabilities of Better ListView by introducing Search Highlight feature. This feature automatically shows search matches and works out of the box with both searching by typing and searching from code (e.g. using search box):

-
Search Highlight Feature

Search Highlight Feature

-

 

-

To enable the highlight, simply add UpdateSearchHighlight option in the search settings:

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-listView.SearchSettings = new BetterListViewSearchSettings(
- listView.SearchSettings.Mode,
- listView.SearchSettings.Options | BetterListViewSearchOptions.UpdateSearchHighlight,
- listView.SearchSettings.SubItemIndices);
-[/csharp]

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-ListView.SearchSettings = New BetterListViewSearchSettings(
- listView.SearchSettings.Mode,
- listView.SearchSettings.Options Or BetterListViewSearchOptions.UpdateSearchHighlight,
- listView.SearchSettings.SubItemIndices)
-[/vb]

-

Every item contains information about the match in the BetterListViewItem.SearchHighlight property. When BetterListViewItem.SearchHighlight.IsEmpty is true, the item was not matched by the search. Otherwise it contains information about the matched substring: its index and number of characters.

-

Highlight colors can be adjusted by three properties: ColorSearchHighlightColorSearchHighlightBorder and ColorSearchHighlightText:

-
Search Highlight Properties

Search Highlight Properties

-

The display can be adjusted even further with owner drawing:

-
Customized Search Highlight Feature

Customized Search Highlight Feature

-

Here we have used ellipses drawn on item background by modifying OnDrawItem and OnDrawItemBackground methods of BetterListView:

-

C#

-

[csharp gutter=”false” toolbar=”false”]
-using System.Drawing;
-using System.Drawing.Drawing2D;

-

using BetterListView;

-

internal sealed class CustomListView : BetterListView
-{
- protected override void OnDrawItem(BetterListViewDrawItemEventArgs eventArgs)
- {
- // do not draw search highlight because we will draw our own
- eventArgs.DrawSearchHighlight = false;

-

base.OnDrawItem(eventArgs);
- }

-

protected override void OnDrawItemBackground(BetterListViewDrawItemBackgroundEventArgs eventArgs)
- {
- base.OnDrawItemBackground(eventArgs);

-

// draw custom search highlight on item background
- BetterListViewSearchHighlight searchHighlight = eventArgs.Item.SearchHighlight;

-

if (searchHighlight.IsEmpty == false)
- {
- eventArgs.Graphics.SmoothingMode = SmoothingMode.HighQuality;

-

Rectangle rectHighlight = eventArgs.ItemBounds.SubItemBounds[searchHighlight.ColumnIndex].BoundsSearchHighlight;

-

Brush brushHighlight = new SolidBrush(Color.FromArgb(128, Color.MediumPurple));
- Pen penHighlight = new Pen(Color.Purple, 1.0f);

-

eventArgs.Graphics.FillEllipse(brushHighlight, rectHighlight);
- eventArgs.Graphics.DrawEllipse(penHighlight, rectHighlight);

-

brushHighlight.Dispose();
- penHighlight.Dispose();
- }
- }
-}
-[/csharp]

-

Visual Basic

-

[vb gutter=”false” toolbar=”false”]
-Imports System.Drawing
-Imports System.Drawing.Drawing2D

-

Imports BetterListView

-

Friend NotInheritable Class CustomListView
- Inherits BetterListView
- Protected Overrides Sub OnDrawItem(eventArgs As BetterListViewDrawItemEventArgs)
- ‘ do not draw search highlight because we will draw our own
- eventArgs.DrawSearchHighlight = False

-

MyBase.OnDrawItem(eventArgs)
- End Sub

-

Protected Overrides Sub OnDrawItemBackground(eventArgs As BetterListViewDrawItemBackgroundEventArgs)
- MyBase.OnDrawItemBackground(eventArgs)

-

‘ draw custom search highlight on item background
- Dim searchHighlight As BetterListViewSearchHighlight = eventArgs.Item.SearchHighlight

-

If searchHighlight.IsEmpty = False Then
- eventArgs.Graphics.SmoothingMode = SmoothingMode.HighQuality

-

Dim rectHighlight As Rectangle = eventArgs.ItemBounds.SubItemBounds(searchHighlight.ColumnIndex).BoundsSearchHighlight

-

Dim brushHighlight As Brush = New SolidBrush(Color.FromArgb(128, Color.MediumPurple))
- Dim penHighlight As New Pen(Color.Purple, 1F)

-

eventArgs.Graphics.FillEllipse(brushHighlight, rectHighlight)
- eventArgs.Graphics.DrawEllipse(penHighlight, rectHighlight)

-

brushHighlight.Dispose()
- penHighlight.Dispose()
- End If
- End Sub
-End Class
-[/vb]

- -
- - - - -
- - - - - -

One Response to “Enabling Search Highlight in Better ListView”

- -
    -
  1. -
    -
    - Camiel Hessels says:
    - - - -

    Awesome, just what I need! Thanks!

    - - -
    -
  2. -
- - - - - -
- -

Leave a Reply to Camiel Hessels

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/index.html?p=103.html b/public/blog/index.html%3Fp=103.html similarity index 100% rename from public/blog/index.html?p=103.html rename to public/blog/index.html%3Fp=103.html diff --git a/public/blog/index.html?p=119.html b/public/blog/index.html%3Fp=119.html similarity index 100% rename from public/blog/index.html?p=119.html rename to public/blog/index.html%3Fp=119.html diff --git a/public/blog/index.html?p=129.html b/public/blog/index.html%3Fp=129.html similarity index 100% rename from public/blog/index.html?p=129.html rename to public/blog/index.html%3Fp=129.html diff --git a/public/blog/index.html?p=189.html b/public/blog/index.html%3Fp=189.html similarity index 100% rename from public/blog/index.html?p=189.html rename to public/blog/index.html%3Fp=189.html diff --git a/public/blog/index.html?p=204.html b/public/blog/index.html%3Fp=204.html similarity index 100% rename from public/blog/index.html?p=204.html rename to public/blog/index.html%3Fp=204.html diff --git a/public/blog/index.html?p=213.html b/public/blog/index.html%3Fp=213.html similarity index 100% rename from public/blog/index.html?p=213.html rename to public/blog/index.html%3Fp=213.html diff --git a/public/blog/index.html?p=232.html b/public/blog/index.html%3Fp=232.html similarity index 100% rename from public/blog/index.html?p=232.html rename to public/blog/index.html%3Fp=232.html diff --git a/public/blog/index.html?p=260.html b/public/blog/index.html%3Fp=260.html similarity index 100% rename from public/blog/index.html?p=260.html rename to public/blog/index.html%3Fp=260.html diff --git a/public/blog/index.html?p=278.html b/public/blog/index.html%3Fp=278.html similarity index 100% rename from public/blog/index.html?p=278.html rename to public/blog/index.html%3Fp=278.html diff --git a/public/blog/index.html?p=287.html b/public/blog/index.html%3Fp=287.html similarity index 100% rename from public/blog/index.html?p=287.html rename to public/blog/index.html%3Fp=287.html diff --git a/public/blog/index.html?p=304.html b/public/blog/index.html%3Fp=304.html similarity index 100% rename from public/blog/index.html?p=304.html rename to public/blog/index.html%3Fp=304.html diff --git a/public/blog/index.html?p=330.html b/public/blog/index.html%3Fp=330.html similarity index 100% rename from public/blog/index.html?p=330.html rename to public/blog/index.html%3Fp=330.html diff --git a/public/blog/index.html?p=34.html b/public/blog/index.html%3Fp=34.html similarity index 100% rename from public/blog/index.html?p=34.html rename to public/blog/index.html%3Fp=34.html diff --git a/public/blog/index.html?p=340.html b/public/blog/index.html%3Fp=340.html similarity index 100% rename from public/blog/index.html?p=340.html rename to public/blog/index.html%3Fp=340.html diff --git a/public/blog/index.html?p=348.html b/public/blog/index.html%3Fp=348.html similarity index 100% rename from public/blog/index.html?p=348.html rename to public/blog/index.html%3Fp=348.html diff --git a/public/blog/index.html?p=359.html b/public/blog/index.html%3Fp=359.html similarity index 100% rename from public/blog/index.html?p=359.html rename to public/blog/index.html%3Fp=359.html diff --git a/public/blog/index.html?p=373.html b/public/blog/index.html%3Fp=373.html similarity index 100% rename from public/blog/index.html?p=373.html rename to public/blog/index.html%3Fp=373.html diff --git a/public/blog/index.html?p=398.html b/public/blog/index.html%3Fp=398.html similarity index 100% rename from public/blog/index.html?p=398.html rename to public/blog/index.html%3Fp=398.html diff --git a/public/blog/index.html?p=40.html b/public/blog/index.html%3Fp=40.html similarity index 100% rename from public/blog/index.html?p=40.html rename to public/blog/index.html%3Fp=40.html diff --git a/public/blog/index.html?p=437.html b/public/blog/index.html%3Fp=437.html similarity index 100% rename from public/blog/index.html?p=437.html rename to public/blog/index.html%3Fp=437.html diff --git a/public/blog/index.html?p=450.html b/public/blog/index.html%3Fp=450.html similarity index 100% rename from public/blog/index.html?p=450.html rename to public/blog/index.html%3Fp=450.html diff --git a/public/blog/index.html?p=468.html b/public/blog/index.html%3Fp=468.html similarity index 100% rename from public/blog/index.html?p=468.html rename to public/blog/index.html%3Fp=468.html diff --git a/public/blog/index.html?p=476.html b/public/blog/index.html%3Fp=476.html similarity index 100% rename from public/blog/index.html?p=476.html rename to public/blog/index.html%3Fp=476.html diff --git a/public/blog/index.html?p=478.html b/public/blog/index.html%3Fp=478.html similarity index 100% rename from public/blog/index.html?p=478.html rename to public/blog/index.html%3Fp=478.html diff --git a/public/blog/index.html?p=480.html b/public/blog/index.html%3Fp=480.html similarity index 100% rename from public/blog/index.html?p=480.html rename to public/blog/index.html%3Fp=480.html diff --git a/public/blog/index.html?p=482.html b/public/blog/index.html%3Fp=482.html similarity index 100% rename from public/blog/index.html?p=482.html rename to public/blog/index.html%3Fp=482.html diff --git a/public/blog/index.html?p=546.html b/public/blog/index.html%3Fp=546.html similarity index 100% rename from public/blog/index.html?p=546.html rename to public/blog/index.html%3Fp=546.html diff --git a/public/blog/index.html?p=664.html b/public/blog/index.html%3Fp=664.html similarity index 100% rename from public/blog/index.html?p=664.html rename to public/blog/index.html%3Fp=664.html diff --git a/public/blog/index.html?p=753.html b/public/blog/index.html%3Fp=753.html similarity index 100% rename from public/blog/index.html?p=753.html rename to public/blog/index.html%3Fp=753.html diff --git a/public/blog/index.html?p=760.html b/public/blog/index.html%3Fp=760.html similarity index 100% rename from public/blog/index.html?p=760.html rename to public/blog/index.html%3Fp=760.html diff --git a/public/blog/index.html?p=771.html b/public/blog/index.html%3Fp=771.html similarity index 100% rename from public/blog/index.html?p=771.html rename to public/blog/index.html%3Fp=771.html diff --git a/public/blog/index.html?p=780.html b/public/blog/index.html%3Fp=780.html similarity index 100% rename from public/blog/index.html?p=780.html rename to public/blog/index.html%3Fp=780.html diff --git a/public/blog/index.html?p=796.html b/public/blog/index.html%3Fp=796.html similarity index 100% rename from public/blog/index.html?p=796.html rename to public/blog/index.html%3Fp=796.html diff --git a/public/blog/index.html?p=803.html b/public/blog/index.html%3Fp=803.html similarity index 100% rename from public/blog/index.html?p=803.html rename to public/blog/index.html%3Fp=803.html diff --git a/public/blog/index.html?p=808.html b/public/blog/index.html%3Fp=808.html similarity index 100% rename from public/blog/index.html?p=808.html rename to public/blog/index.html%3Fp=808.html diff --git a/public/blog/index.html?p=823.html b/public/blog/index.html%3Fp=823.html similarity index 100% rename from public/blog/index.html?p=823.html rename to public/blog/index.html%3Fp=823.html diff --git a/public/blog/index.html?p=831.html b/public/blog/index.html%3Fp=831.html similarity index 100% rename from public/blog/index.html?p=831.html rename to public/blog/index.html%3Fp=831.html diff --git a/public/blog/index.html?p=843.html b/public/blog/index.html%3Fp=843.html similarity index 100% rename from public/blog/index.html?p=843.html rename to public/blog/index.html%3Fp=843.html diff --git a/public/blog/index.html?p=850.html b/public/blog/index.html%3Fp=850.html similarity index 100% rename from public/blog/index.html?p=850.html rename to public/blog/index.html%3Fp=850.html diff --git a/public/blog/index.html?p=861.html b/public/blog/index.html%3Fp=861.html similarity index 100% rename from public/blog/index.html?p=861.html rename to public/blog/index.html%3Fp=861.html diff --git a/public/blog/index.html?p=868.html b/public/blog/index.html%3Fp=868.html similarity index 100% rename from public/blog/index.html?p=868.html rename to public/blog/index.html%3Fp=868.html diff --git a/public/blog/index.html?p=878.html b/public/blog/index.html%3Fp=878.html similarity index 100% rename from public/blog/index.html?p=878.html rename to public/blog/index.html%3Fp=878.html diff --git a/public/blog/index.html?p=882.html b/public/blog/index.html%3Fp=882.html similarity index 100% rename from public/blog/index.html?p=882.html rename to public/blog/index.html%3Fp=882.html diff --git a/public/blog/index.html?p=888.html b/public/blog/index.html%3Fp=888.html similarity index 100% rename from public/blog/index.html?p=888.html rename to public/blog/index.html%3Fp=888.html diff --git a/public/blog/index.html?p=894.html b/public/blog/index.html%3Fp=894.html similarity index 100% rename from public/blog/index.html?p=894.html rename to public/blog/index.html%3Fp=894.html diff --git a/public/blog/index.html?p=901.html b/public/blog/index.html%3Fp=901.html similarity index 100% rename from public/blog/index.html?p=901.html rename to public/blog/index.html%3Fp=901.html diff --git a/public/blog/index.html?p=906.html b/public/blog/index.html%3Fp=906.html similarity index 100% rename from public/blog/index.html?p=906.html rename to public/blog/index.html%3Fp=906.html diff --git a/public/blog/index.html?p=914.html b/public/blog/index.html%3Fp=914.html similarity index 100% rename from public/blog/index.html?p=914.html rename to public/blog/index.html%3Fp=914.html diff --git a/public/blog/index.html?p=921.html b/public/blog/index.html%3Fp=921.html similarity index 100% rename from public/blog/index.html?p=921.html rename to public/blog/index.html%3Fp=921.html diff --git a/public/blog/index.html?p=927.html b/public/blog/index.html%3Fp=927.html similarity index 100% rename from public/blog/index.html?p=927.html rename to public/blog/index.html%3Fp=927.html diff --git a/public/blog/index.html?p=93.html b/public/blog/index.html%3Fp=93.html similarity index 100% rename from public/blog/index.html?p=93.html rename to public/blog/index.html%3Fp=93.html diff --git a/public/blog/search-filtering-in-better-listview/index.html?replytocom=1353.html b/public/blog/search-filtering-in-better-listview/index.html?replytocom=1353.html deleted file mode 100644 index dc2aad0..0000000 --- a/public/blog/search-filtering-in-better-listview/index.html?replytocom=1353.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -Search Filtering in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Search Filtering in Better ListView

- - - -
-
Search Filtering

Search Filtering with highlight

-

There are few ways of making searching in large list of items more convenient. For example, Better ListView provides Search Highlighting and Item Hiding features that can be used to improve searching. The above animation shows both of these features in action when searching for a word “pear” using keyboard.

-

The implementation is very simple and involves handling just two events: ItemSearch (raised whenever item is searched, e.g. using keyboard ) and KeyDown:

-

[csharp gutter=”false” toolbar=”false”]
-var listView = new BetterListView();

-

listView.Items.AddRange(new[] { “apple”, “pear”, “pineapple”, “orange”, “grapefruit”, “cherry”, “avocado” });

-

listView.ItemSearch += listView_ItemSearch;
-listView.KeyDown += listView_KeyDown;
-[/csharp]

-

The ItemSearch event handler finds matching items and sets their visibility accordingly. It also updates the highlighting:

-

[csharp gutter=”false” toolbar=”false”]
-void listView_ItemSearch(object sender, BetterListViewItemSearchEventArgs eventArgs)
-{
- var listView = (BetterListView)sender;

-

listView.BeginUpdate();

-

// update item visibility according to search query string
- foreach (var item in listView.Items)
- {
- bool match = item.Text.Contains(eventArgs.QueryString);

-

if (match)
- {
- item.Visible = true;

-

item.SearchHighlight = new BetterListViewSearchHighlight(
- 0,
- item.Text.IndexOf(eventArgs.QueryString, StringComparison.Ordinal),
- eventArgs.QueryString.Length);
- }
- else
- {
- item.Visible = false;
- }
- }

-

listView.EndUpdate();
-}
-[/csharp]

-

Finally, the KeyDown event handler resets the view when Escape key is pressed (all items are made visible and the highlight is removed):

-

[csharp gutter=”false” toolbar=”false”]
-void listView_KeyDown(object sender, KeyEventArgs e)
-{
- var listView = (BetterListView)sender;

-

listView.BeginUpdate();

-

if (e.KeyCode == Keys.Escape)
- {
- // remove search highlight
- //NOTE: we could use BetterListView.RemoveSearchHighlight() but this applies to visible items only and some items are hidden at the time
- foreach (var item in listView.Items)
- {
- item.SearchHighlight = BetterListViewSearchHighlight.Empty;
- }

-

// make all items visible
- foreach (var item in listView.Items)
- {
- item.Visible = true;
- }

-

// mark the key as handled
- e.Handled = true;

-

// suppress KeyPress event to prevent ItemSearch from happening
- e.SuppressKeyPress = true;
- }

-

listView.EndUpdate();
-}
-[/csharp]

-

And that’s it!

- -
- - - - -
- - - - - -

2 Responses to “Search Filtering in Better ListView”

- -
    -
  1. -
    -
    - mustafa salah says:
    - - - -

    Is this applicable for Express version?

    - - -
    - -
  2. -
- - - - - -
- -

Leave a Reply to mustafa salah

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/search-filtering-in-better-listview/index.html?replytocom=1369.html b/public/blog/search-filtering-in-better-listview/index.html?replytocom=1369.html deleted file mode 100644 index 9139a8b..0000000 --- a/public/blog/search-filtering-in-better-listview/index.html?replytocom=1369.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -Search Filtering in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Search Filtering in Better ListView

- - - -
-
Search Filtering

Search Filtering with highlight

-

There are few ways of making searching in large list of items more convenient. For example, Better ListView provides Search Highlighting and Item Hiding features that can be used to improve searching. The above animation shows both of these features in action when searching for a word “pear” using keyboard.

-

The implementation is very simple and involves handling just two events: ItemSearch (raised whenever item is searched, e.g. using keyboard ) and KeyDown:

-

[csharp gutter=”false” toolbar=”false”]
-var listView = new BetterListView();

-

listView.Items.AddRange(new[] { “apple”, “pear”, “pineapple”, “orange”, “grapefruit”, “cherry”, “avocado” });

-

listView.ItemSearch += listView_ItemSearch;
-listView.KeyDown += listView_KeyDown;
-[/csharp]

-

The ItemSearch event handler finds matching items and sets their visibility accordingly. It also updates the highlighting:

-

[csharp gutter=”false” toolbar=”false”]
-void listView_ItemSearch(object sender, BetterListViewItemSearchEventArgs eventArgs)
-{
- var listView = (BetterListView)sender;

-

listView.BeginUpdate();

-

// update item visibility according to search query string
- foreach (var item in listView.Items)
- {
- bool match = item.Text.Contains(eventArgs.QueryString);

-

if (match)
- {
- item.Visible = true;

-

item.SearchHighlight = new BetterListViewSearchHighlight(
- 0,
- item.Text.IndexOf(eventArgs.QueryString, StringComparison.Ordinal),
- eventArgs.QueryString.Length);
- }
- else
- {
- item.Visible = false;
- }
- }

-

listView.EndUpdate();
-}
-[/csharp]

-

Finally, the KeyDown event handler resets the view when Escape key is pressed (all items are made visible and the highlight is removed):

-

[csharp gutter=”false” toolbar=”false”]
-void listView_KeyDown(object sender, KeyEventArgs e)
-{
- var listView = (BetterListView)sender;

-

listView.BeginUpdate();

-

if (e.KeyCode == Keys.Escape)
- {
- // remove search highlight
- //NOTE: we could use BetterListView.RemoveSearchHighlight() but this applies to visible items only and some items are hidden at the time
- foreach (var item in listView.Items)
- {
- item.SearchHighlight = BetterListViewSearchHighlight.Empty;
- }

-

// make all items visible
- foreach (var item in listView.Items)
- {
- item.Visible = true;
- }

-

// mark the key as handled
- e.Handled = true;

-

// suppress KeyPress event to prevent ItemSearch from happening
- e.SuppressKeyPress = true;
- }

-

listView.EndUpdate();
-}
-[/csharp]

-

And that’s it!

- -
- - - - -
- - - - - -

2 Responses to “Search Filtering in Better ListView”

- -
    -
  1. -
    -
    - mustafa salah says:
    - - - -

    Is this applicable for Express version?

    - - -
    - -
  2. -
- - - - - -
- -

Leave a Reply to Libor Tinka

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/vertical-alignment-and-text-wrapping-in-better-listview/index.html?replytocom=1092.html b/public/blog/vertical-alignment-and-text-wrapping-in-better-listview/index.html?replytocom=1092.html deleted file mode 100644 index 444dbc2..0000000 --- a/public/blog/vertical-alignment-and-text-wrapping-in-better-listview/index.html?replytocom=1092.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -Vertical Alignment and Text Wrapping in Better ListView « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Vertical Alignment and Text Wrapping in Better ListView

- - - -
-

.NET ListView supports horizontal alignment of text in columns, items, sub-items and groups. Since Better ListView adds many new features, like multi-line items and images of arbitrary size, vertical alignment comes in handy.

-

By default, each view has its defaults, but you can customize text alignment on every column, item, sub-item and group individually:

-
-
Vertical alignments of text

Vertical alignments of text

-
-
-
-
-

The vertical alignment feature is a new property of each element type. For example, .NET ListView item has a property called Align which refers to horizontal alignment. Better ListView extends this to two independent properties called AlignHorizontal and AlignVertical. The naming scheme is same for columns, items, sub-items and groups.

-

Better ListView also supports splitting text in column headers and items (sub-items) into multiple lines.

-

We extended this functionality by adding a BetterListViewItem.TextWrapping and BetterListViewSubItem.TextWrapping properties. With these, you can control how the text in sub-items will be wrapped. There are three possible values:

-
    -
  • Layout – the text will be wrapped to multiple lines, up to value specified by MaximumTextLines property of the corresponding view (layout)
  • -
  • None – the text will not be wrapped at all
  • -
  • Space – the text will be wrapped, but only to available space (item will never get higher due to wrapping text in sub-item with this setting)
  • -
-
The following screenshot shows these three wrapping modes in action:
-
-
Various text wrapping modes

Various text wrapping modes

-
-

The sub-item in the first column has TextWrapping set to Layout and the layout has MaximumTextLines set to 4. The sub-item text thus can be split to up to four lines. It is actually split just to three because the column is wide enough.

-

The sub-item in the second column has TextWrapping set to None, which means the text in this sub-item is kept on single line.

-

The sub-item in the third column has TextWrapping set to Space. As you can see, even if the MaximumTextLines is set to 4, the sub-item text is limited to three lines, preventing item to grow larger.

- -
- - - - -
- - - - - -

One Response to “Vertical Alignment and Text Wrapping in Better ListView”

- -
    -
  1. -
    -
    - Daniel N says:
    - - - -

    Very nice guys… With each new version, Better ListView is doing exactly that: just getting better and better!

    -

    I am particularly keen to try putting in my own linebreaks into items in the details view.

    - - -
    -
  2. -
- - - - - -
- -

Leave a Reply to Daniel N

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

-
- -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/wp-content/plugins/akismet/_inc/form.js?ver=4.0.8 b/public/blog/wp-content/plugins/akismet/_inc/form.js?ver=4.0.8 deleted file mode 100644 index 3a5be8a..0000000 --- a/public/blog/wp-content/plugins/akismet/_inc/form.js?ver=4.0.8 +++ /dev/null @@ -1,30 +0,0 @@ -var ak_js = document.getElementById( "ak_js" ); - -if ( ! ak_js ) { - ak_js = document.createElement( 'input' ); - ak_js.setAttribute( 'id', 'ak_js' ); - ak_js.setAttribute( 'name', 'ak_js' ); - ak_js.setAttribute( 'type', 'hidden' ); -} -else { - ak_js.parentNode.removeChild( ak_js ); -} - -ak_js.setAttribute( 'value', ( new Date() ).getTime() ); - -var commentForm = document.getElementById( 'commentform' ); - -if ( commentForm ) { - commentForm.appendChild( ak_js ); -} -else { - var replyRowContainer = document.getElementById( 'replyrow' ); - - if ( replyRowContainer ) { - var children = replyRowContainer.getElementsByTagName( 'td' ); - - if ( children.length > 0 ) { - children[0].appendChild( ak_js ); - } - } -} \ No newline at end of file diff --git a/public/blog/wp-content/themes/componentowl/images/arrow-bullet.gif b/public/blog/wp-content/themes/componentowl/images/arrow-bullet.gif deleted file mode 100644 index 930e055..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/arrow-bullet.gif and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/bg.png b/public/blog/wp-content/themes/componentowl/images/bg.png deleted file mode 100644 index b725c3b..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/bg.png and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/footer-bg.png b/public/blog/wp-content/themes/componentowl/images/footer-bg.png deleted file mode 100644 index 10bed95..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/footer-bg.png and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/icons/lightbulb.gif b/public/blog/wp-content/themes/componentowl/images/icons/lightbulb.gif deleted file mode 100644 index cde578f..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/icons/lightbulb.gif and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/rss.png b/public/blog/wp-content/themes/componentowl/images/rss.png deleted file mode 100644 index fbde3c7..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/rss.png and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/search.gif b/public/blog/wp-content/themes/componentowl/images/search.gif deleted file mode 100644 index d15c85a..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/search.gif and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/images/ss-bg.gif.html b/public/blog/wp-content/themes/componentowl/images/ss-bg.gif.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/themes/componentowl/images/ss-bg.gif.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/themes/componentowl/images/twitter.png b/public/blog/wp-content/themes/componentowl/images/twitter.png deleted file mode 100644 index ae29a5d..0000000 Binary files a/public/blog/wp-content/themes/componentowl/images/twitter.png and /dev/null differ diff --git a/public/blog/wp-content/themes/componentowl/javascripts/theme.js b/public/blog/wp-content/themes/componentowl/javascripts/theme.js deleted file mode 100644 index 01e00bf..0000000 --- a/public/blog/wp-content/themes/componentowl/javascripts/theme.js +++ /dev/null @@ -1,32 +0,0 @@ -(function($) { - - $(document).ready(function() { - - $(".d-menu li").each(function() { - var $this = $(this); - var dropdown = $this.find(".dropdown"); - if (dropdown.size() == 1) { - $this.hover(function() { - $this.addClass("with-dropdown-hover"); - dropdown.show(); - }, function() { - $this.removeClass("with-dropdown-hover"); - dropdown.hide(); - }); - } - }); - - $("input.inline-label").each(function() { - $(this).data("initial_value", $(this).val()); - }); - $("input.inline-label").focus(function() { - var el = $(this); - el.addClass("inline-label-focus"); - if (el.val() == el.data("initial_value")) { - el.val(""); - } - }); - - }); - -})(jQuery); \ No newline at end of file diff --git a/public/blog/wp-content/themes/componentowl/style.css b/public/blog/wp-content/themes/componentowl/style.css deleted file mode 100644 index e6c4e69..0000000 --- a/public/blog/wp-content/themes/componentowl/style.css +++ /dev/null @@ -1,797 +0,0 @@ -/* -Theme Name: ComponentOwl -Theme URI: http://www.componentowl.com/ -Description: ComponentOwl WordPress Theme. -Version: 1.0 -Author: Ondrej Zabojnik -Author URI: http://www.dextronet.com/ -Tags: blue, custom header, fixed width, two columns, widgets - -*/ - - - -/* COWL THEME */ - -html { height: 100%; } -body { height: 100%; font-size: 14px; font-family: arial, sans-serif; - background: #fefefe url(images/bg.png) top repeat-x; color: #000; text-align: center; } - -a { color: #825900; outline: none; } -a:hover { color: #000; } -a:active { color: #ab7500; } - -input[type=text], input[type=password], textarea, select { padding: 2px; border: 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; - background-color: #fff; border-color: #abadb3 #dbdfe6 #e3e9ef #e2e3ea;} -input[type=text]:focus, input[type=password]:hover, input[type=password]:focus, input[type=text]:hover, textarea:focus, textarea:hover, select:focus, select:hover { - border-color: #d6a140 #efd9b2 #f3e3c6 #f2e1c1; -} -input { font-size: 13px; } -input.required, textarea.required { border-color: #dea110 #f1c354 #f2d58f #f2d58f !important; background-color: #fff8e9; } - -.inline-label-focus { color: #000 !important; } -.inline-label { color: #85878d; } - -.plain-border { border: 1px solid #4c4c4c; } -.centered { display: block; margin-left: auto; margin-right: auto; } - -h1 { margin: 0; padding: 0; } - -.blog-name { color: #000; font-size: 36px; margin: 15px 0 0; } -.blog-name a { color: inherit; text-decoration: none; } -.blog-description { font-size: 14px; font-weight: bold; font-family: arial, sans-serif; margin: 0 0 35px; } - -.image-link { display: block; text-indent: -9999em; } - -ul.common li { padding: 2px 0 3px 23px; background: url(images/arrow-bullet.gif) 4px 5px no-repeat; } - -.postmetadata { font-size: 12px; color: #9e9e9e; margin: 3px 0 0; } -.postmetadata a { color: #9e9e9e; } -.postmetadata a:hover { color: #000; } - -.postinfobar { padding: 3px; font-size: 12px; border-top: 1px dotted #a8906b; overflow: hidden; width: 100%; } -.postinfobar .comments { float: right; font-weight: bold; } -.altbar { margin-top: 8px; } - -.entry p { margin-top: 4px; line-height: 1.5em; color: #222222; font-family: sans-serif; } - -#sidebar { padding: 6px 0 8px; } - -#searchform-sidebar .search { border-color: #daba82; border-width: 2px; } -#searchform-sidebar .search:focus, #searchform-sidebar .search:hover { border-color: #d6a140; } - -#searchform-sidebar { margin: 12px 0 0; padding: 0 0 12px; position: relative; border-bottom: 1px dotted #a8906b; } -#s-sidebar { width: 191px; vertical-align: middle; margin: 0; } -#searchsubmit-sidebar { position: absolute; right: 3px; top: 2px; } - -.dextronet-sidebar-ad-box p { margin: 0 !important; } -.dextronet-sidebar-ad-box img { margin-top: 5px; } -.dextronet-sidebar-ad-box .download { display: block; margin-top: 8px; padding: 5px 0; color: #fff; font-weight: bold; text-align: center; background: #5caf1f; - text-decoration: none; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; -} -.dextronet-sidebar-ad-box .download:hover { background: #825900; } - -#facebook_like iframe { height: 35px !important; } - -.tip { margin: 10px 0; border: 1px solid #d2d24b; padding: 3px 5px 3px 26px; - background: #ffffbb url(images/icons/lightbulb.gif) 5px 50% no-repeat; } - -.dextronet-newsletter-box { margin-top: 10px; background: #e1effc url(images/ss-bg.gif.html) 0 0 no-repeat; } -.dextronet-newsletter-box img { margin: 5px; } -.dextronet-newsletter-box form { padding: 5px; font-size: 12px; text-align: center; background: url(images/ss-bg.gif.html) 100% 100% no-repeat; } -.dextronet-newsletter-box div { padding: 3px 0; } -.dextronet-newsletter-box .email { width: 135px; } -.dextronet-newsletter-box input { margin-bottom: 3px; } - -.dextronet-feeds { margin: 15px 0 0; padding-bottom: 12px; border-bottom: 1px dotted #a8906b; } -.dextronet-feeds .links { margin: 0 !important; list-style: none; padding: 0 !important; } -.dextronet-feeds .links li { margin: 0 !important; } -.dextronet-feeds .links a { padding: 7px 0 10px 37px; display: block; } -.dextronet-feeds .links .rss { background: url(images/rss.png) 0 50% no-repeat; } -.dextronet-feeds .links .twitter { background: url(images/twitter.png) 0 50% no-repeat; } - -.product-ad { overflow: hidden; width: 100%; margin: 25px 0; border: 1px solid #86bcea; border-left: none; border-right: none; padding: 8px 0; } -.product-ad .screenshot { float: left; margin: 0 15px 0 0; } -.product-ad h3 { font-size: 26px; margin: 0; } -.product-ad p { font-size: 16px; margin: 0; font-weight: bold; } -.product-ad .buttons { padding-top: 14px; } - -.entry { padding-top: 10px; } -.entry h1, .entry h2 { color: #000; padding: 0; margin: 0; } -.entry h1 { font-size: 1.2em; margin: 20px 0 10px; } -.entry h2 { font-size: 1em; margin: 20px 0 8px; } - -.dbtn-c { - border-bottom: 1px solid #ecdfb9; - border-right: 1px solid #ecdfb9; - display: inline-block; -} -.dbtn-w { - background: #efe5c6; - border-color: #ac995e #9f8d55 #9f8d55 #ac995e; - border-style: solid; - border-width: 1px; - display: block; - height: 30px; -} -.dbtn { - background: url(../../../../images/dbtn.png) repeat-x; - border: none; - color: #000000; - cursor: pointer; - font: 15px arial, sans-serif; - height: 30px; - margin: 0; - outline: none; - vertical-align: top; - padding-left: 15px; - padding-right: 15px; -} -a.dbtn { display: block; height: 30px; line-height: 30px; text-decoration: none; } -.dbtn:active { background: #decd9b; } -.dbtn-hilight { border-color: #cfe3a6; } -.dbtn-hilight .dbtn-w { - background: #e8f2d3; - border-color: #9bc842 #84b12a #84b12a #9bc842; -} -.dbtn-hilight .dbtn { background-image: url(../../../../images/dbtn-hilight.png); font-weight: bold; } -.dbtn-hilight .dbtn:active { background: #bad782; } - - -/* MAIN STRUCTURE */ - -.d-main { float: left; width: 650px; } -.d-sidebar { float: right; width: 200px; } - -.d-placing { margin: auto; text-align: left; width: 900px; } -.d-page { position: relative; min-height: 100%; } - -.d-header { height: 47px; } -.d-logo { float: right; margin-top: 15px; } -.d-menu { float: left; margin: 0; padding: 0; } -.d-menu li { float: left; position: relative; padding-right: 35px !important; list-style: none; } -.d-menu .menu-item { display: block; position: relative; z-index: 99; padding: 12px 0 1px; color: #fff; text-decoration: none; } -.d-menu .active .menu-item { border-bottom: 1px solid #bb983b; padding-bottom: 2px; } -.d-menu .menu-item:hover { border-bottom: 2px solid #bb983b; padding-bottom: 1px; color: #fff; } -.d-menu .featured { color: #fecb33 !important; } - -.d-menu .dropdown { position: absolute; top: 30px; left: -20px; width: 250px; } -.d-menu .dropdown .outer { position: relative; z-index: 97; padding-left: 6px; background: url(../../../../images/dropdown-o.png) 0 100% no-repeat; } -.d-menu .dropdown .shadowbox { position: relative; z-index: 98; padding: 0 8px 8px 0; background: url(../../../../images/dropdown-s.png) 100% 100% no-repeat; } -.d-menu .dropdown .inner { position: relative; overflow: auto; height: 100%; z-index: 99; padding: 12px 14px; background: #362919; border: 1px solid #1c1410; border-top: none; } -.d-menu .dropdown a, .d-menu .dropdown a:hover { color: #fff; } - -.dropdown-submenu .inner { padding: 10px 0 0 !important; } -.dropdown-submenu a { padding: 10px 14px; display: block; text-decoration: none; } -.dropdown-submenu a:hover { background-color: #bb983b; } -.dropdown-submenu li { padding: 0; margin: 0; } -.dropdown-submenu img { display: block; float: left; margin: 4px 10px 0 0; } - -.dropdown .featured-item { font-size: 16px; font-weight: bold; } -.dropdown .subline { display: block; font-size: 12px; color: #fff; padding-top: 3px; } -.dropdown .dropdown-category { background-color: #876234; color: #fff; font-weight: bold; padding: 5px 8px; } - -.d-content-wrap { padding-bottom: 80px; overflow: hidden; height: 100%; padding-top: 40px } -.d-footer { position: absolute; bottom: 0; right: 0; width: 100%; padding: 13px 0 17px; color: #fff; font-size: 11px; - background: #3a2c18 url(images/footer-bg.png) repeat-x; } -.d-footer a { color: #fff; } -.d-footer a:hover { color: #f4c179; } -.d-footer .copy { font-size: 11px; padding-left: 140px; background: url(../../../../images/dextronet.gif) 0 12px no-repeat; } -.d-footer .social { padding: 10px 0 4px; } -.d-footer .social span { padding: 0 3px; } - -/* /MAIN STRUCTURE */ -/* /COWL THEME */ - - -#page { - background-color: white; - border: 1px solid #959596; - text-align: left; - } - -.widecolumn .entry p { - font-size: 1.05em; - } - -.narrowcolumn .entry, .widecolumn .entry { - line-height: 1.4em; - } - -.widecolumn { - line-height: 1.6em; - } - -.narrowcolumn .postmetadata { - text-align: center; - } - -.thread-alt { - background-color: #f8f8f8; -} -.thread-even { - background-color: white; -} -.depth-1 { -border: 1px solid #ddd; -} - -small { - font-family: arial, Sans-Serif; - font-size: 0.9em; - line-height: 1.5em; - } - -h2, h3 { - font-family: arial, helvetica, Sans-Serif; - font-weight: bold; - } - -#headerimg .description { - font-size: 1.2em; - text-align: center; - } - -h2 { - font-size: 1.70em; - } - -h2.pagetitle { - font-size: 1.55em; - } - -#sidebar h2 { - font-family: arial, Helvetica, Sans-Serif; - font-size: 1.1em; - } - -h3 { - font-size: 1.25em; - } - -#headerimg .description { - text-decoration: none; - color: white; - } - -h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited { - color: #000; - } - -h2, h2 a, h2 a:hover, h2 a:visited, h3, h3 a, h3 a:hover, h3 a:visited, #sidebar h2, #wp-calendar caption, cite { - text-decoration: none; - } -h2 a:hover { color: #000; } - -.entry p a:visited { - color: #585348; - } - -.sticky { - background: #f7f7f7; - padding: 0 10px 10px; - } -.sticky h2 { - padding-top: 10px; - } - -.commentlist li, #commentform input, #commentform textarea { - font: 0.9em arial, helvetica, Sans-Serif; - } -.commentlist li ul li { - font-size: 1em; -} - -.commentlist li { - font-weight: bold; -} - -.commentlist li .avatar { - float: right; - border: 1px solid #eee; - padding: 2px; - background: #fff; - } - -.commentlist cite, .commentlist cite a { - font-weight: bold; - font-style: normal; - text-decoration: none; - font-size: 1.1em; - } - -.commentlist p { - font-weight: normal; - line-height: 1.5em; - text-transform: none; - } - -#commentform p { - font-family: arial, Sans-Serif; - } - -.commentmetadata { - font-weight: normal; - } - -#sidebar { - font: 1em arial, Sans-Serif; - } - -small, #sidebar ul ul li, #sidebar ul ol li, .nocomments, blockquote, strike { - color: #777; - } - -code { - font: 1.1em 'Courier New', Courier, Fixed; - } - -acronym, abbr, span.caps -{ - font-size: 0.9em; - letter-spacing: .07em; - } - -#wp-calendar #prev a, #wp-calendar #next a { - font-size: 9pt; - } - -#wp-calendar a { - text-decoration: none; - } - -#wp-calendar caption { - font: bold 1.3em arial, Sans-Serif; - text-align: center; - } - -#wp-calendar th { - font-style: normal; - text-transform: capitalize; - } -/* End Typography & Colors */ - - - -/* Begin Structure */ -body { - margin: 0; - padding: 0; - } - -#page { - background-color: white; - margin: 20px auto; - padding: 0; - width: 760px; - border: 1px solid #959596; - } - -.narrowcolumn { - float: left; - padding: 0 0 20px 45px; - margin: 0px 0 0; - width: 450px; - } - -.widecolumn { - padding: 10px 0 20px 0; - margin: 5px 0 0 150px; - width: 450px; - } - -.post { - margin: 0 0 40px; - } - -.post hr { - display: block; - } - -.widecolumn .post { - margin: 0; - } - -.narrowcolumn .postmetadata { - padding-top: 5px; - } - -.widecolumn .postmetadata { - margin: 30px 0; - } - -.widecolumn .smallattachment { - text-align: center; - float: left; - width: 128px; - margin: 5px 5px 5px 0px; -} - -.widecolumn .attachment { - text-align: center; - margin: 5px 0px; -} - -.postmetadata { - clear: both; -} - -.clear { - clear: both; -} - -#footer { - padding: 0; - margin: 0 auto; - width: 760px; - clear: both; - } - -#footer p { - margin: 0; - padding: 20px 0; - text-align: center; - } -/* End Structure */ - - - -/* Begin Headers */ - -h2 { - margin: 25px 0 0; - } - -h2.pagetitle { - margin-top: 30px; - text-align: center; -} - -#sidebar h2 { - margin: 5px 0 0; - padding: 0; - } - -h3 { - padding: 0; - margin: 30px 0 0; - } - -h3.comments { - padding: 0; - margin: 40px auto 20px ; - } -/* End Headers */ - - - -/* Begin Images */ -p img { - padding: 0; - max-width: 100%; - } - -/* Using 'class="alignright"' on an image will (who would've - thought?!) align the image to the right. And using 'class="centered', - will of course center the image. This is much better than using - align="center", being much more futureproof (and valid) */ - -img.centered { - display: block; - margin-left: auto; - margin-right: auto; - } - -img.alignright { - padding: 4px; - margin: 0 0 2px 7px; - display: inline; - } - -img.alignleft { - padding: 4px; - margin: 0 7px 2px 0; - display: inline; - } - -.alignright { - float: right; - } - -.alignleft { - float: left; - } -/* End Images */ - - - -/* Begin Lists - - Special stylized non-IE bullets - Do not work in Internet Explorer, which merely default to normal bullets. */ - -html>body .entry ul { - margin-left: 0px; - padding: 0 0 0 30px; - list-style: none; - padding-left: 10px; - text-indent: -10px; - } - -html>body .entry li { - margin: 7px 0 8px 10px; - } - -.entry ul li:before { - content: "\00BB \0020"; - } - -.entry ol { - padding: 0 0 0 35px; - margin: 0; - } - -.entry ol li { - margin: 0; - padding: 0; - } - -.postmetadata ul, .postmetadata li { - display: inline; - list-style-type: none; - list-style-image: none; - } - -#sidebar ul, #sidebar ul ol { - margin: 0; - padding: 0; - } - -#sidebar ul li { - list-style-type: none; - list-style-image: none; - margin-bottom: 15px; - } - -#sidebar ul p, #sidebar ul select { - margin: 5px 0 8px; - } - -#sidebar ul ul, #sidebar ul ol { - margin: 0; - } - -#sidebar ul ul ul, #sidebar ul ol { - margin: 0 0 0 10px; - } - -ol li, #sidebar ul ol li { - list-style: decimal outside; - } - -#sidebar ul ul li, #sidebar ul ol li { - margin: 3px 0 0; - padding: 0; - } -/* End Entry Lists */ - - - -/* Begin Form Elements */ - -.entry form { /* This is mainly for password protected posts, makes them look better. */ - text-align:center; - } - -select { - width: 130px; - } - -#commentform input { - width: 170px; - padding: 2px; - margin: 5px 5px 1px 0; - } - -#commentform { - margin: 5px 10px 0 0; - } -#commentform textarea { - width: 100%; - padding: 2px; - } -#respond:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; - } -#commentform #submit { - margin: 0 0 5px auto; - float: right; - } -/* End Form Elements */ - - - -/* Begin Comments*/ -.alt { - margin: 0; - padding: 10px; - } - -.commentlist { - padding: 0; - text-align: justify; - } - -.commentlist li { - margin: 15px 0 10px; - padding: 5px 5px 10px 10px; - list-style: none; - - } -.commentlist li ul li { - margin-right: -5px; - margin-left: 10px; -} - -.commentlist p { - margin: 10px 5px 10px 0; -} -.children { padding: 0; } - -#commentform p { - margin: 5px 0; - } - -.nocomments { - text-align: center; - margin: 0; - padding: 0; - } - -.commentmetadata { - margin: 0; - display: block; - } -/* End Comments */ - - - -/* Begin Sidebar */ - -#sidebar form { - margin: 0; - } -/* End Sidebar */ - - - -/* Begin Calendar */ -#wp-calendar { - empty-cells: show; - margin: 10px auto 0; - width: 155px; - } - -#wp-calendar #next a { - padding-right: 10px; - text-align: right; - } - -#wp-calendar #prev a { - padding-left: 10px; - text-align: left; - } - -#wp-calendar a { - display: block; - } - -#wp-calendar caption { - text-align: center; - width: 100%; - } - -#wp-calendar td { - padding: 3px 0; - text-align: center; - } - -#wp-calendar td.pad:hover { /* Doesn't work in IE */ - background-color: #fff; } -/* End Calendar */ - - - -/* Begin Various Tags & Classes */ -acronym, abbr, span.caps { - cursor: help; - } - -acronym, abbr { - border-bottom: 1px dashed #999; - } - -blockquote { - margin: 15px 30px 0 10px; - padding-left: 20px; - border-left: 5px solid #ddd; - } - -blockquote cite { - margin: 5px 0 0; - display: block; - } - -.center { - text-align: center; - } - -.hidden { - display: none; - } - -.screen-reader-text { - position: absolute; - left: -1000em; -} - -hr { - display: none; - } - -a img { - border: none; - } - -.navigation { - display: block; - text-align: center; - margin-top: 10px; - margin-bottom: 60px; - } -/* End Various Tags & Classes*/ - - - -/* Captions */ -.aligncenter, -div.aligncenter { - display: block; - margin-left: auto; - margin-right: auto; -} - -.wp-caption { - border: 1px solid #ddd; - text-align: center; - background-color: #f3f3f3; - padding-top: 4px; - margin: 10px; - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.wp-caption img { - margin: 0; - padding: 0; - border: 0 none; -} - -.wp-caption p.wp-caption-text { - font-size: 11px; - line-height: 17px; - padding: 0 4px 5px; - margin: 0; -} -/* End captions */ - - -/* "Daisy, Daisy, give me your answer do. I'm half crazy all for the love of you. - It won't be a stylish marriage, I can't afford a carriage. - But you'll look sweet upon the seat of a bicycle built for two." */ diff --git a/public/blog/wp-content/uploads/2011/01/is-full-300x229.jpg b/public/blog/wp-content/uploads/2011/01/is-full-300x229.jpg deleted file mode 100644 index 51c3c48..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/is-full-300x229.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/is-full.jpg b/public/blog/wp-content/uploads/2011/01/is-full.jpg deleted file mode 100644 index 6406813..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/is-full.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/is-highlight-300x229.jpg b/public/blog/wp-content/uploads/2011/01/is-highlight-300x229.jpg deleted file mode 100644 index 5dd7507..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/is-highlight-300x229.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/is-highlight.jpg b/public/blog/wp-content/uploads/2011/01/is-highlight.jpg deleted file mode 100644 index 19497e8..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/is-highlight.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/stdl-full-300x206.jpg b/public/blog/wp-content/uploads/2011/01/stdl-full-300x206.jpg deleted file mode 100644 index 0fe13ce..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/stdl-full-300x206.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/stdl-full.jpg b/public/blog/wp-content/uploads/2011/01/stdl-full.jpg deleted file mode 100644 index 4c64c36..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/stdl-full.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/stdl-highlight-300x206.jpg b/public/blog/wp-content/uploads/2011/01/stdl-highlight-300x206.jpg deleted file mode 100644 index e907c81..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/stdl-highlight-300x206.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/01/stdl-highlight.jpg b/public/blog/wp-content/uploads/2011/01/stdl-highlight.jpg deleted file mode 100644 index b900449..0000000 Binary files a/public/blog/wp-content/uploads/2011/01/stdl-highlight.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/borders-150x150.jpg b/public/blog/wp-content/uploads/2011/02/borders-150x150.jpg deleted file mode 100644 index 4affc6b..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/borders-150x150.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/borders-300x300.jpg b/public/blog/wp-content/uploads/2011/02/borders-300x300.jpg deleted file mode 100644 index 970fbff..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/borders-300x300.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/borders.jpg b/public/blog/wp-content/uploads/2011/02/borders.jpg deleted file mode 100644 index 0ad6204..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/borders.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/extra-graphics-150x150.png b/public/blog/wp-content/uploads/2011/02/extra-graphics-150x150.png deleted file mode 100644 index adb551f..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/extra-graphics-150x150.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/extra-graphics-300x300.png b/public/blog/wp-content/uploads/2011/02/extra-graphics-300x300.png deleted file mode 100644 index 94988ae..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/extra-graphics-300x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/extra-graphics.png b/public/blog/wp-content/uploads/2011/02/extra-graphics.png deleted file mode 100644 index 28586c0..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/extra-graphics.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/screenshot-300x196.jpg b/public/blog/wp-content/uploads/2011/02/screenshot-300x196.jpg deleted file mode 100644 index ac8be6d..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/screenshot-300x196.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/02/screenshot.jpg b/public/blog/wp-content/uploads/2011/02/screenshot.jpg deleted file mode 100644 index 49965f3..0000000 Binary files a/public/blog/wp-content/uploads/2011/02/screenshot.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/03/screen-styles-238x300.png b/public/blog/wp-content/uploads/2011/03/screen-styles-238x300.png deleted file mode 100644 index de6529f..0000000 Binary files a/public/blog/wp-content/uploads/2011/03/screen-styles-238x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/03/screen-styles.png b/public/blog/wp-content/uploads/2011/03/screen-styles.png deleted file mode 100644 index 4b9121c..0000000 Binary files a/public/blog/wp-content/uploads/2011/03/screen-styles.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-1-300x176.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-1-300x176.png deleted file mode 100644 index 1856f7b..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-1-300x176.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-1.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-1.png deleted file mode 100644 index 66ee4e2..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-2-300x134.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-2-300x134.png deleted file mode 100644 index ed3b5db..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-2-300x134.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-2.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-2.png deleted file mode 100644 index 4299360..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-3-300x103.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-3-300x103.png deleted file mode 100644 index 415022a..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-3-300x103.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-3.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-3.png deleted file mode 100644 index 4464ec3..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-3.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-4-300x61.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-4-300x61.png deleted file mode 100644 index 664752d..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-4-300x61.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-4.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-4.png deleted file mode 100644 index 5e9c1dd..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-4.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/05/cowl-blog-5.png b/public/blog/wp-content/uploads/2011/05/cowl-blog-5.png deleted file mode 100644 index 283fe5b..0000000 Binary files a/public/blog/wp-content/uploads/2011/05/cowl-blog-5.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2-300x242.jpg b/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2-300x242.jpg deleted file mode 100644 index c5e9830..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2-300x242.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2.jpg b/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2.jpg deleted file mode 100644 index 01d28ce..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-2.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-300x242.jpg b/public/blog/wp-content/uploads/2011/06/blv-thumbnails-300x242.jpg deleted file mode 100644 index 9735858..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/blv-thumbnails-300x242.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/blv-thumbnails.jpg b/public/blog/wp-content/uploads/2011/06/blv-thumbnails.jpg deleted file mode 100644 index 5a50dc7..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/blv-thumbnails.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-1.png b/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-1.png deleted file mode 100644 index 82da67f..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-2.png b/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-2.png deleted file mode 100644 index 358874b..0000000 Binary files a/public/blog/wp-content/uploads/2011/06/list-view-drag-drop-reordering-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1-300x279.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1-300x279.png deleted file mode 100644 index 2644ff4..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1-300x279.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1.png deleted file mode 100644 index b6445c5..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2-300x262.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2-300x262.png deleted file mode 100644 index 9a00341..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2-300x262.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2.png deleted file mode 100644 index 73f2398..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3-300x280.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3-300x280.png deleted file mode 100644 index ea7b6c0..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3-300x280.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3.png b/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3.png deleted file mode 100644 index 5917c6b..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/betterlistview2-overview3.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-aero-300x213.png b/public/blog/wp-content/uploads/2011/07/blv-aero-300x213.png deleted file mode 100644 index 45b4c56..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-aero-300x213.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-aero.png b/public/blog/wp-content/uploads/2011/07/blv-aero.png deleted file mode 100644 index b97f0d4..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-aero.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-classic-300x213.png b/public/blog/wp-content/uploads/2011/07/blv-classic-300x213.png deleted file mode 100644 index 7b61652..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-classic-300x213.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-classic.png b/public/blog/wp-content/uploads/2011/07/blv-classic.png deleted file mode 100644 index bd3958f..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-classic.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-luna-300x213.png b/public/blog/wp-content/uploads/2011/07/blv-luna-300x213.png deleted file mode 100644 index e3821e0..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-luna-300x213.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/07/blv-luna.png b/public/blog/wp-content/uploads/2011/07/blv-luna.png deleted file mode 100644 index 386914c..0000000 Binary files a/public/blog/wp-content/uploads/2011/07/blv-luna.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/08/blv-fileexplorersample.png b/public/blog/wp-content/uploads/2011/08/blv-fileexplorersample.png deleted file mode 100644 index 9c4fe6e..0000000 Binary files a/public/blog/wp-content/uploads/2011/08/blv-fileexplorersample.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/08/column-hide-after.png b/public/blog/wp-content/uploads/2011/08/column-hide-after.png deleted file mode 100644 index ef0ac87..0000000 Binary files a/public/blog/wp-content/uploads/2011/08/column-hide-after.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/08/column-hide-before-300x82.png b/public/blog/wp-content/uploads/2011/08/column-hide-before-300x82.png deleted file mode 100644 index 8f7a9bf..0000000 Binary files a/public/blog/wp-content/uploads/2011/08/column-hide-before-300x82.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/08/column-hide-before.png b/public/blog/wp-content/uploads/2011/08/column-hide-before.png deleted file mode 100644 index 29fbcbf..0000000 Binary files a/public/blog/wp-content/uploads/2011/08/column-hide-before.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/09/2611677_345f676344.jpg b/public/blog/wp-content/uploads/2011/09/2611677_345f676344.jpg deleted file mode 100644 index bce207d..0000000 Binary files a/public/blog/wp-content/uploads/2011/09/2611677_345f676344.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/09/vs-error-list-300x111.png b/public/blog/wp-content/uploads/2011/09/vs-error-list-300x111.png deleted file mode 100644 index ed9a92e..0000000 Binary files a/public/blog/wp-content/uploads/2011/09/vs-error-list-300x111.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/09/vs-error-list.png b/public/blog/wp-content/uploads/2011/09/vs-error-list.png deleted file mode 100644 index 57cdba3..0000000 Binary files a/public/blog/wp-content/uploads/2011/09/vs-error-list.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/10/samples-cs-vb-300x80.png b/public/blog/wp-content/uploads/2011/10/samples-cs-vb-300x80.png deleted file mode 100644 index b294e93..0000000 Binary files a/public/blog/wp-content/uploads/2011/10/samples-cs-vb-300x80.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/10/samples-cs-vb.png b/public/blog/wp-content/uploads/2011/10/samples-cs-vb.png deleted file mode 100644 index 539354f..0000000 Binary files a/public/blog/wp-content/uploads/2011/10/samples-cs-vb.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight-300x178.png b/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight-300x178.png deleted file mode 100644 index 86fcd80..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight-300x178.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight.png b/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight.png deleted file mode 100644 index 16fd6f6..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-keep-selection-highlight.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-multi-line-2.png b/public/blog/wp-content/uploads/2011/11/screen-multi-line-2.png deleted file mode 100644 index 6295b03..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-multi-line-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items-300x176.png b/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items-300x176.png deleted file mode 100644 index 986ba70..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items-300x176.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items.png b/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items.png deleted file mode 100644 index cded606..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-multiple-hot-items.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-wrapping-300x70.png b/public/blog/wp-content/uploads/2011/11/screen-wrapping-300x70.png deleted file mode 100644 index 1ed6c9f..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-wrapping-300x70.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screen-wrapping.png b/public/blog/wp-content/uploads/2011/11/screen-wrapping.png deleted file mode 100644 index 3da6f7e..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screen-wrapping.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screenshot-newlines-295x300.png b/public/blog/wp-content/uploads/2011/11/screenshot-newlines-295x300.png deleted file mode 100644 index 86359a2..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screenshot-newlines-295x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/screenshot-newlines.png b/public/blog/wp-content/uploads/2011/11/screenshot-newlines.png deleted file mode 100644 index 0b77d00..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/screenshot-newlines.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align-300x264.png b/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align-300x264.png deleted file mode 100644 index 770f152..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align-300x264.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align.png b/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align.png deleted file mode 100644 index 98f4a5c..0000000 Binary files a/public/blog/wp-content/uploads/2011/11/text-formatting-vertical-align.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/12/screen-dynamic-300x157.gif b/public/blog/wp-content/uploads/2011/12/screen-dynamic-300x157.gif deleted file mode 100644 index 3a0935c..0000000 Binary files a/public/blog/wp-content/uploads/2011/12/screen-dynamic-300x157.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2011/12/screen-dynamic.gif b/public/blog/wp-content/uploads/2011/12/screen-dynamic.gif deleted file mode 100644 index 678f5eb..0000000 Binary files a/public/blog/wp-content/uploads/2011/12/screen-dynamic.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-combineditems1.png b/public/blog/wp-content/uploads/2012/01/blv-combineditems1.png deleted file mode 100644 index 7b1cbb0..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-combineditems1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-combineditems2.png b/public/blog/wp-content/uploads/2012/01/blv-combineditems2.png deleted file mode 100644 index de68905..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-combineditems2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-150x150.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-150x150.png deleted file mode 100644 index 06b9cc9..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-150x150.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-300x300.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-300x300.png deleted file mode 100644 index 08e0607..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1-300x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1.png deleted file mode 100644 index 5d41a5f..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-150x150.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-150x150.png deleted file mode 100644 index 472a9eb..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-150x150.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-300x300.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-300x300.png deleted file mode 100644 index 452a2e1..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2-300x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2.png b/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2.png deleted file mode 100644 index 60773c0..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-nonselectable-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-1-300x229.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-1-300x229.png deleted file mode 100644 index 586f33a..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-1-300x229.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-1.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-1.png deleted file mode 100644 index 657f119..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-2-300x229.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-2-300x229.png deleted file mode 100644 index 242e35b..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-2-300x229.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-2.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-2.png deleted file mode 100644 index f98b9f1..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-3-300x229.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-3-300x229.png deleted file mode 100644 index 7c80e13..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-3-300x229.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-readonly-3.png b/public/blog/wp-content/uploads/2012/01/blv-readonly-3.png deleted file mode 100644 index 756d3e5..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-readonly-3.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1-300x202.png b/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1-300x202.png deleted file mode 100644 index b524a66..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1-300x202.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1.png b/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1.png deleted file mode 100644 index 8f448ad..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2-300x202.png b/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2-300x202.png deleted file mode 100644 index 5032977..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2-300x202.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2.png b/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2.png deleted file mode 100644 index 76a5671..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/blv-showdefaultgroup2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/metadata-view-194x300.png b/public/blog/wp-content/uploads/2012/01/metadata-view-194x300.png deleted file mode 100644 index 5f9efe9..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/metadata-view-194x300.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/01/metadata-view.png b/public/blog/wp-content/uploads/2012/01/metadata-view.png deleted file mode 100644 index 00209a2..0000000 Binary files a/public/blog/wp-content/uploads/2012/01/metadata-view.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/02/blv-invisibleitems-257x300.gif b/public/blog/wp-content/uploads/2012/02/blv-invisibleitems-257x300.gif deleted file mode 100644 index ac91471..0000000 Binary files a/public/blog/wp-content/uploads/2012/02/blv-invisibleitems-257x300.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/02/blv-invisibleitems.gif b/public/blog/wp-content/uploads/2012/02/blv-invisibleitems.gif deleted file mode 100644 index dc0a2e6..0000000 Binary files a/public/blog/wp-content/uploads/2012/02/blv-invisibleitems.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/02/distraction-junkie-coder.png.png b/public/blog/wp-content/uploads/2012/02/distraction-junkie-coder.png.png deleted file mode 100644 index fbf5498..0000000 Binary files a/public/blog/wp-content/uploads/2012/02/distraction-junkie-coder.png.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/02/zen-coder.png b/public/blog/wp-content/uploads/2012/02/zen-coder.png deleted file mode 100644 index f45699c..0000000 Binary files a/public/blog/wp-content/uploads/2012/02/zen-coder.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/03/blv-customheight.png b/public/blog/wp-content/uploads/2012/03/blv-customheight.png deleted file mode 100644 index 587488b..0000000 Binary files a/public/blog/wp-content/uploads/2012/03/blv-customheight.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/03/screen-custom-spacing-150x150.png b/public/blog/wp-content/uploads/2012/03/screen-custom-spacing-150x150.png deleted file mode 100644 index 4fd29f5..0000000 Binary files a/public/blog/wp-content/uploads/2012/03/screen-custom-spacing-150x150.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/03/screen-custom-spacing.png b/public/blog/wp-content/uploads/2012/03/screen-custom-spacing.png deleted file mode 100644 index f33deed..0000000 Binary files a/public/blog/wp-content/uploads/2012/03/screen-custom-spacing.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/03/screen-pixel-share-300x158.png b/public/blog/wp-content/uploads/2012/03/screen-pixel-share-300x158.png deleted file mode 100644 index cd3b0ee..0000000 Binary files a/public/blog/wp-content/uploads/2012/03/screen-pixel-share-300x158.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/03/screen-pixel-share.png b/public/blog/wp-content/uploads/2012/03/screen-pixel-share.png deleted file mode 100644 index 92c070b..0000000 Binary files a/public/blog/wp-content/uploads/2012/03/screen-pixel-share.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/blv-embedded-1-300x136.png b/public/blog/wp-content/uploads/2012/04/blv-embedded-1-300x136.png deleted file mode 100644 index c3e198a..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/blv-embedded-1-300x136.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/blv-embedded-1.png b/public/blog/wp-content/uploads/2012/04/blv-embedded-1.png deleted file mode 100644 index fd219b5..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/blv-embedded-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/blv-embedded-2.png b/public/blog/wp-content/uploads/2012/04/blv-embedded-2.png deleted file mode 100644 index 026b6fa..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/blv-embedded-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/rightalign-group2-300x261.png b/public/blog/wp-content/uploads/2012/04/rightalign-group2-300x261.png deleted file mode 100644 index 011148b..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/rightalign-group2-300x261.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/rightalign-group2.png b/public/blog/wp-content/uploads/2012/04/rightalign-group2.png deleted file mode 100644 index fd9d10a..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/rightalign-group2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/04/rightalign.png b/public/blog/wp-content/uploads/2012/04/rightalign.png deleted file mode 100644 index c3ac98a..0000000 Binary files a/public/blog/wp-content/uploads/2012/04/rightalign.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/08/anigif.gif b/public/blog/wp-content/uploads/2012/08/anigif.gif deleted file mode 100644 index ffad706..0000000 Binary files a/public/blog/wp-content/uploads/2012/08/anigif.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/09/custom-selection.png b/public/blog/wp-content/uploads/2012/09/custom-selection.png deleted file mode 100644 index 0bedee2..0000000 Binary files a/public/blog/wp-content/uploads/2012/09/custom-selection.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/12/chapter-drag-drop.html b/public/blog/wp-content/uploads/2012/12/chapter-drag-drop.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/chapter-drag-drop.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/chapter-embedded-controls.html b/public/blog/wp-content/uploads/2012/12/chapter-embedded-controls.html deleted file mode 100644 index c6640e1..0000000 --- a/public/blog/wp-content/uploads/2012/12/chapter-embedded-controls.html +++ /dev/null @@ -1,719 +0,0 @@ - - - - -Embedded Controls - - - - -
-
- - - - -

Embedded Controls

- - - - - -

Embedded editing controls can be thought of as an extension to label - edit functionality (see Label - Editing for more information).

- -

Every item and sub-item has a cell area on which - an editing control can be placed. In the simplest case - (LabelEdit set to true), the editing control is - basically a System.Windows.Forms.TextBox control. It is - actually an instance of BetterListViewTextBoxEmbeddedControl, - which is a TextBox wrapper implementing - IBetterListViewEmbeddedControl interface. Any control can be - used as embedded control in Bettter ListView if implements one of these - interfaces:

- - -

The custom embedded control is shown on the image below. When user - clicks on sub-item text (an abbreviation of tea grading), an editing control - appears on the top-left corner of the cell area. The control contains - buttons for accepting and cancelling changes:

- -

- -

Implementing IBetterListViewEmbeddedControl

- - -

This interface contains prescription for minimum amount of - functionality required by an embedded control:

- - -

Let's make a sample control. We will make a - TextBox-based embedded control for editing words in - lower-case. First, we inherit TextBox and implement - IBetterListViewEmbeddedControl interface:

- -

C#

-
/// <summary>
-///   Represents a custom control embeddable in Better ListView.
-/// </summary>
-public class TextBoxEmbeddedControl : TextBox, IBetterListViewEmbeddedControl
- -

Visual Basic

-
''' <summary>
-'''   Represents a custom control embeddable in Better ListView.
-''' </summary>
-Public Class TextBoxEmbeddedControl
-    Inherits TextBox
-    Implements IBetterListViewEmbeddedControl
- -

Then we implement the LabelText property:

- -

C#

-
/// <summary>
-///   current (edited) label text
-/// </summary>
-public string LabelText
-{
-    get
-    {
-        return Text.ToLower();
-    }
-}
- -

Visual Basic

-
''' <summary>
-'''   current (edited) label text
-''' </summary>
-Public ReadOnly Property LabelText() As String
-    Get
-        Return Text.ToLower()
-    End Get
-End Property
- -

As you can see, the text of the TextBox is converted to - lower case since we want item/sub-item labels to be only in lower - case.

- -

Next, we implement RequestAccept and - RequestCancel events:

- -

C#

-
/// <summary>
-///   request accepting updated data in BetterListView
-/// </summary>
-public event EventHandler RequestAccept;
-
-/// <summary>
-///   request cancelling editing
-/// </summary>
-public event EventHandler RequestCancel;
- -

Visual Basic

-
''' <summary>
-'''   request accepting updated data in BetterListView
-''' </summary>
-Public Event RequestAccept As EventHandler Implements IBetterListViewEmbeddedControl.RequestAccept
-
-''' <summary>
-'''   request cancelling editing
-''' </summary>
-Public Event RequestCancel As EventHandler Implements IBetterListViewEmbeddedControl.RequestCancel
- -

Next, we implement GetData and SetData - methods:

- -

C#

-
/// <summary>
-///   get data from the specified sub-item in control
-/// </summary>
-/// <param name = "subItem">sub-item whose data are being edited</param>
-public void GetData(BetterListViewSubItem subItem)
-{
-	Text = subItem.Text;
-}
-
-/// <summary>
-///   set data from control to the specified sub-item
-/// </summary>
-/// <param name = "subItem">sub-item whose data are being edited</param>
-public void SetData(BetterListViewSubItem subItem)
-{
-    subItem.Text = LabelText;
-}
- -

Visual Basic

-
''' <summary>
-'''   get data from the specified sub-item in control
-''' </summary>
-''' <param name = "subItem">sub-item whose data are being edited</param>
-Public Sub GetData(ByVal subItem As BetterListViewSubItem) Implements IBetterListViewEmbeddedControl.GetData
-
-    Text = subItem.Text
-
-End Sub
-
-''' <summary>
-'''   set data from control to the specified sub-item
-''' </summary>
-''' <param name = "subItem">sub-item whose data are being edited</param>
-Public Sub SetData(ByVal subItem As BetterListViewSubItem) Implements IBetterListViewEmbeddedControl.SetData
-
-    subItem.Text = LabelText
-
-End Sub
- -

These method are trivial since we need not to do any data - conversions (the only conversion here is lowering the case of edited text - in the LabelText getter).

- -

The last method contained in the interface is SetSize - method, which needs not to be implemented (the body can be kept empty). - You implement this method only if you need to adjust control's size when - label edit starts.

- -

The constructor should be implemented like this:

- -

C#

-
/// <summary>
-///   Initializes a new instance of the <see cref = "TextBoxEmbeddedControl" /> class.
-/// </summary>
-public TextBoxEmbeddedControl()
-{
-    AcceptsReturn = true;
-    CausesValidation = false;
-}
- -

Visual Basic

-
''' <summary>
-'''   Initializes a new instance of the <see cref = "TextBoxEmbeddedControl" /> class.
-''' </summary>
-Public Sub New()
-
-    AcceptsReturn = True
-    CausesValidation = False
-
-End Sub
- -

The AcceptsReturn property is set to true - because we will handle the ENTER key (and raise - RequestAccept event appropriately).

- -

The CausesValidation property is set to - false because it is a good practice in this situation.

- -

Both input and output data are validated in the - IBetterListViewEmbeddedControl implementation and validation - of some third-party controls can prevent whole form with the control from - closing.

- -

The last thing we implement is handling of the - ENTER key for accepting the data and the - ESCAPE key for cancelling:

- -

C#

-
protected override void OnKeyDown(KeyEventArgs e)
-{
-    if (e.KeyCode == Keys.Enter &&
-        RequestAccept != null)
-    {
-        RequestAccept(this, EventArgs.Empty);
-
-        e.Handled = true;
-
-        return;
-    }
-
-    if (e.KeyCode == Keys.Escape &&
-        RequestCancel != null)
-    {
-        RequestCancel(this, EventArgs.Empty);
-
-        e.Handled = true;
-
-        return;
-    }
-
-    base.OnKeyDown(e);
-}
- -

Visual Basic

-
Protected Overrides Sub OnKeyDown(e As KeyEventArgs)
-
-    If e.KeyCode = Keys.Enter AndAlso RequestAccept IsNot Nothing Then
-
-        RequestAccept(Me, EventArgs.Empty)
-
-        e.Handled = True
-
-        Return
-
-    End If
-
-    If e.KeyCode = Keys.Escape AndAlso RequestCancel IsNot Nothing Then
-
-    RequestCancel(Me, EventArgs.Empty)
-
-    e.Handled = True
-
-    Return
-
-    End If
-
-    MyBase.OnKeyDown(e)
-
-End Sub
- -

-

It is a common good practice to implement interfaces explicitly. - The sample implementation is implicit for the sake of better - readability. Embedded controls implemented in BetterListView.dll are - implemented implicitly (and marked virtual) to allow for being inherited - (e.g. MyCustomControl : BetterListViewEmbeddedControl) and - you may possibly want to override any part of the interface - implementation.

-
-

Implementing IBetterListViewEmbeddedControlExtended

- - -

The extended interface has currently only one method called - RequestEndEdit. This method can be called by the Better - ListView, when it asks the control whether it is ready to end editing. The - control can return a boolean value (true - continue - EndEdit, false - refuse to end editing). There - are many situations when the label editing is terminated (e.g. scrolling - the control, selecting items...) and terminating the label edit is not - always wanted (this is a case of - System.Windows.Forms.DateTimePicker control, which sometimes - behaves as being transparent for mouse clicks and thus being closed - because of click-through on the Better ListView client area - the - RequestEndEdit method fixes such possible behavior of third - party controls).

- - -

Sample Source Code

- - -

Form with Better ListView containing some columns and items:

- -

C#

-
/// <summary>
-///   Shows embedding of custom controls into Better ListView.
-/// </summary>
-internal sealed partial class EmbeddedControlSampleForm : Form
-{
-    /// <summary>
-    ///   Initializes a new instance of the <see cref = "EmbeddedControlSampleForm" /> class.
-    /// </summary>
-    public EmbeddedControlSampleForm()
-    {
-        InitializeComponent();
-
-        this.listView.BeginUpdate();
-
-        this.listView.Columns.AddRange(new[]
-                                       {
-                                           new BetterListViewColumnHeader("Document name", 160),
-                                           new BetterListViewColumnHeader("Access", 128)
-                                       });
-
-        this.listView.Items.AddRange(
-            new[]
-            {
-                new BetterListViewItem(new[] { "hydro-report.pdf", "read" }),
-                new BetterListViewItem(new[] { "magnetic_resonance.docx", "read write" }),
-                new BetterListViewItem(new[] { "billing forms (2011).zip", "read" })
-            });
-
-        this.listView.LabelEditActivation = (BetterListViewLabelEditActivation.Keyboard | BetterListViewLabelEditActivation.SingleClick);
-        this.listView.LabelEditModeSubItems = BetterListViewLabelEditMode.CustomControl;
-
-        this.listView.EndUpdate();
-
-        this.listView.RequestEmbeddedControl += ListViewRequestEmbeddedControl;
-    }
-
-    private IBetterListViewEmbeddedControl ListViewRequestEmbeddedControl(object sender, BetterListViewRequestEmbeddedControlEventArgs eventArgs)
-    {
-        if (eventArgs.SubItem.Index == 1)
-        {
-            return (new DocumentAccessConrol());
-        }
-
-        return null;
-    }
-}
- -

Visual Basic

-
''' <summary>
-'''   Shows embedding of custom controls into Better ListView.
-''' </summary>
-Partial Friend NotInheritable Class EmbeddedControlSampleForm
-
-    ''' <summary>
-    '''   Initializes a new instance of the <see cref = "EmbeddedControlSampleForm" /> class.
-    ''' </summary>
-    Public Sub New()
-
-        InitializeComponent()
-
-        ListView.BeginUpdate()
-
-        ListView.Columns.AddRange(
-            New BetterListViewColumnHeader() { _
-                                                 New BetterListViewColumnHeader("Document name", 160),
-                                                 New BetterListViewColumnHeader("Access", 128)
-                                             })
-
-        ListView.Items.AddRange(
-            New BetterListViewItem() { _
-                                         New BetterListViewItem(New String() {"hydro-report.pdf", "read"}),
-                                         New BetterListViewItem(New String() {"magnetic_resonance.docx", "read write"}),
-                                         New BetterListViewItem(New String() {"billing forms (2011).zip", "read"})
-                                     })
-
-        ListView.LabelEditActivation =
-            (BetterListViewLabelEditActivation.Keyboard Or BetterListViewLabelEditActivation.SingleClick)
-        ListView.LabelEditModeSubItems = BetterListViewLabelEditMode.CustomControl
-
-        ListView.EndUpdate()
-
-        AddHandler ListView.RequestEmbeddedControl, AddressOf ListViewRequestEmbeddedControl
-
-    End Sub
-
-    Private Function ListViewRequestEmbeddedControl(ByVal sender As Object,
-                                                     ByVal eventArgs As BetterListViewRequestEmbeddedControlEventArgs) _
-        As IBetterListViewEmbeddedControl
-
-        If eventArgs.SubItem.Index = 1 Then
-            Return (New DocumentAccessConrol())
-        End If
-
-        Return Nothing
-
-    End Function
-
-End Class
- -

DocumentAccessControl class used as complex embedded - control (see EmbeddedControlSampleForm sample in the provided - C# and Visual Basic samples for full source code):

- -

C#

-
/// <summary>
-///   Represents a custom control embeddable in Better ListView.
-/// </summary>
-[ToolboxItem(false)]
-internal sealed partial class DocumentAccessConrol : UserControl, IBetterListViewEmbeddedControl
-{
-    private const string StringRead = "read";
-    private const string StringWrite = "write";
-
-    /// <summary>
-    ///   current (edited) label text
-    /// </summary>
-    public string LabelText
-    {
-        get
-        {
-            // convert control's state to label
-            if (this.checkBoxRead.Checked &&
-                this.checkBoxWrite.Checked)
-            {
-                return String.Format("{0} {1}", StringRead, StringWrite);
-            }
-
-            if (this.checkBoxRead.Checked)
-            {
-                return StringRead;
-            }
-
-            if (this.checkBoxWrite.Checked)
-            {
-                return StringWrite;
-            }
-
-            return String.Empty;
-        }
-    }
-
-    /// <summary>
-    ///   request accepting updated data in BetterListView
-    /// </summary>
-    public event EventHandler RequestAccept;
-
-    /// <summary>
-    ///   request cancelling editing
-    /// </summary>
-    public event EventHandler RequestCancel;
-
-    /// <summary>
-    ///   Initializes a new instance of the <see cref = "DocumentAccessConrol" /> class.
-    /// </summary>
-    public DocumentAccessConrol()
-    {
-        InitializeComponent();
-
-        //NOTE: disabling validation prevents form close cancellation
-        CausesValidation = false;
-
-        foreach (Control control in Controls)
-        {
-            control.LostFocus += ControlOnLostFocus;
-        }
-    }
-
-    /// <summary>
-    ///   get data from the specified sub-item in control
-    /// </summary>
-    /// <param name = "subItem">sub-item whose data are being edited</param>
-    public void GetData(BetterListViewSubItem subItem)
-    {
-        // convert label to control's state
-        this.checkBoxRead.Checked = subItem.Text.Contains(StringRead);
-        this.checkBoxWrite.Checked = subItem.Text.Contains(StringWrite);
-    }
-
-    /// <summary>
-    ///   set data from control to the specified sub-item
-    /// </summary>
-    /// <param name = "subItem">sub-item whose data are being edited</param>
-    public void SetData(BetterListViewSubItem subItem)
-    {
-        subItem.Text = LabelText;
-    }
-
-    /// <summary>
-    ///   set control size
-    /// </summary>
-    /// <param name = "subItem">sub-item whose data are being edited</param>
-    /// <param name = "placement">placement of the embedded control within sub-item</param>
-    public void SetSize(BetterListViewSubItem subItem, BetterListViewEmbeddedControlPlacement placement)
-    {
-        // keep size of the control unchanged
-    }
-
-    private void ControlOnLostFocus(object sender, EventArgs eventArgs)
-    {
-        //
-        // NOTE: this code is needed just for hiding embedded control with sub-controls when user changes active form while label editing
-        //
-        bool anyFocused = Focused;
-
-        if (anyFocused == false)
-        {
-            foreach (Control control in Controls)
-            {
-                if (control.Focused)
-                {
-                    anyFocused = true;
-
-                    break;
-                }
-            }
-        }
-
-        if (anyFocused == false)
-        {
-            RequestAccept(this, eventArgs);
-        }
-    }
-
-    private void ButtonOKClick(object sender, EventArgs e)
-    {
-        RequestAccept(this, e);
-    }
-
-    private void ButtonCancelClick(object sender, EventArgs e)
-    {
-        RequestCancel(this, e);
-    }
-}
- -

Visual Basic

-
''' <summary>
-'''   Represents a custom control embeddable in Better ListView.
-''' </summary>
-<ToolboxItem(False)>
-Partial Friend NotInheritable Class DocumentAccessConrol
-    Inherits UserControl
-    Implements IBetterListViewEmbeddedControl
-
-    Private Const StringRead As String = "read"
-    Private Const StringWrite As String = "write"
-
-    ''' <summary>
-    '''   current (edited) label text
-    ''' </summary>
-    Public ReadOnly Property LabelText() As String Implements IBetterListViewEmbeddedControl.LabelText
-        Get
-            ' convert control's state to label
-            If CheckBoxRead.Checked AndAlso CheckBoxWrite.Checked Then
-                Return [String].Format("{0} {1}", StringRead, StringWrite)
-            End If
-
-            If CheckBoxRead.Checked Then
-                Return StringRead
-            End If
-
-            If CheckBoxWrite.Checked Then
-                Return StringWrite
-            End If
-
-            Return [String].Empty
-        End Get
-    End Property
-
-    ''' <summary>
-    '''   request accepting updated data in BetterListView
-    ''' </summary>
-    Public Event RequestAccept As EventHandler Implements IBetterListViewEmbeddedControl.RequestAccept
-
-    ''' <summary>
-    '''   request cancelling editing
-    ''' </summary>
-    Public Event RequestCancel As EventHandler Implements IBetterListViewEmbeddedControl.RequestCancel
-
-    ''' <summary>
-    '''   Initializes a new instance of the <see cref = "DocumentAccessConrol" /> class.
-    ''' </summary>
-    Public Sub New()
-
-        InitializeComponent()
-
-        'NOTE: disabling validation prevents form close cancellation
-        CausesValidation = False
-
-        For Each control As Control In Controls
-            AddHandler control.LostFocus, AddressOf ControlOnLostFocus
-        Next
-
-    End Sub
-
-    ''' <summary>
-    '''   get data from the specified sub-item in control
-    ''' </summary>
-    ''' <param name = "subItem">sub-item whose data are being edited</param>
-    Public Sub GetData(ByVal subItem As BetterListViewSubItem) Implements IBetterListViewEmbeddedControl.GetData
-
-        ' convert label to control's state
-        CheckBoxRead.Checked = subItem.Text.Contains(StringRead)
-        CheckBoxWrite.Checked = subItem.Text.Contains(StringWrite)
-
-    End Sub
-
-    ''' <summary>
-    '''   set data from control to the specified sub-item
-    ''' </summary>
-    ''' <param name = "subItem">sub-item whose data are being edited</param>
-    Public Sub SetData(ByVal subItem As BetterListViewSubItem) Implements IBetterListViewEmbeddedControl.SetData
-
-        subItem.Text = LabelText
-
-    End Sub
-
-    ''' <summary>
-    '''   set control size
-    ''' </summary>
-    ''' <param name = "subItem">sub-item whose data are being edited</param>
-    ''' <param name = "placement">placement of the embedded control within sub-item</param>
-    Public Sub SetSize(ByVal subItem As BetterListViewSubItem,
-                        ByVal placement As BetterListViewEmbeddedControlPlacement) _
-        Implements IBetterListViewEmbeddedControl.SetSize
-
-        ' keep size of the control unchanged
-
-    End Sub
-
-    Private Sub ControlOnLostFocus(ByVal sender As Object, ByVal eventArgs As EventArgs)
-
-        '
-        ' NOTE: this code is needed just for hiding embedded control with sub-controls when user changes active form while label editing
-        '
-        Dim anyFocused As Boolean = Focused
-
-        If anyFocused = False Then
-            For Each control As Control In Controls
-                If control.Focused Then
-                    anyFocused = True
-
-                    Exit For
-                End If
-            Next
-        End If
-
-        If anyFocused = False Then
-            RaiseEvent RequestAccept(Me, eventArgs)
-        End If
-
-    End Sub
-
-    Private Sub ButtonOKClick(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonOK.Click
-        RaiseEvent RequestAccept(Me, e)
-    End Sub
-
-    Private Sub ButtonCancelClick(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonCancel.Click
-        RaiseEvent RequestCancel(Me, e)
-    End Sub
-
-End Class
- -
- - - - - -
- - - -
- diff --git a/public/blog/wp-content/uploads/2012/12/chapter-empty-text.html b/public/blog/wp-content/uploads/2012/12/chapter-empty-text.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/chapter-empty-text.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/chapter-label-edit.html b/public/blog/wp-content/uploads/2012/12/chapter-label-edit.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/chapter-label-edit.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/embedded-control.png.html b/public/blog/wp-content/uploads/2012/12/embedded-control.png.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/embedded-control.png.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/label-edit.gif b/public/blog/wp-content/uploads/2012/12/label-edit.gif deleted file mode 100644 index 626305c..0000000 Binary files a/public/blog/wp-content/uploads/2012/12/label-edit.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/12/lang-vb.js.html b/public/blog/wp-content/uploads/2012/12/lang-vb.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/lang-vb.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/prettify.css.html b/public/blog/wp-content/uploads/2012/12/prettify.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/prettify.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/prettify.js.html b/public/blog/wp-content/uploads/2012/12/prettify.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/prettify.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/style.css.html b/public/blog/wp-content/uploads/2012/12/style.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/12/style.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/12/w8-theme.jpg b/public/blog/wp-content/uploads/2012/12/w8-theme.jpg deleted file mode 100644 index 2fbed5b..0000000 Binary files a/public/blog/wp-content/uploads/2012/12/w8-theme.jpg and /dev/null differ diff --git a/public/blog/wp-content/uploads/2012/index.html b/public/blog/wp-content/uploads/2012/index.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-content/uploads/2012/index.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/resources/main.css.html b/public/blog/wp-content/uploads/2012/resources/main.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/resources/main.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2012/resources/overview.gif.html b/public/blog/wp-content/uploads/2012/resources/overview.gif.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2012/resources/overview.gif.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/chapter-save-load.html b/public/blog/wp-content/uploads/2013/01/chapter-save-load.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/chapter-save-load.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/chapter-search.html b/public/blog/wp-content/uploads/2013/01/chapter-search.html deleted file mode 100644 index 4f0055e..0000000 --- a/public/blog/wp-content/uploads/2013/01/chapter-search.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - -Searching Items - - - - -
-
- - - - -

Searching Items

- - - - - -

Better ListView offers many options for searching items by typing on - keyboard and programmaticaly (FindItemWithText, - FindItemsWithText methods). Search can be extended to sub-items - and event multiple items can be contained in a search result.

- -

Search can be customized with SearchSettings property. - This structure contains three other properties:

- - -

There is a default one-second delay to register when user stopped - typing and the search is discarded. A new search is initiated when user - starts typing after this interval has passed. This interval can be set via - SearchTimeoutDelay property.

- -

The delay is not relevant when user types the same letter several - times and there are other items beginning with that letter. If there are - items named ab, ac, - ad, then the selection cycles through these items as - long as the user keeps pressing A key. This works - essentialy the same way as in the Windows Explorer.

- -

-

The keyboard search works, of course, only when the control has - focus. You can ensure this (e.g. when showing the form) by calling - Focus method on Better ListView.

-
-

Sample Source Code

- - -

C#

-
this.listView.BeginUpdate();
-
-// fill the ListView with items in two columns
-this.listView.Columns.AddRange(
-    new[]
-    {
-        new BetterListViewColumnHeader("Word", 128),
-        new BetterListViewColumnHeader("Synonym List", 160)
-    });
-
-this.listView.Items.AddRange(
-    new[]
-    {
-        new BetterListViewItem(new[] { "apparently", "evidently, presumably, seemingly" }),
-        new BetterListViewItem(new[] { "blunt", "brusque, curt, snippy" }),
-        new BetterListViewItem(new[] { "class", "caste, estate, folk" }),
-        new BetterListViewItem(new[] { "detailed", "elaborate, full, thorough" }),
-    });
-
-// search in substrings
-BetterListViewSearchMode searchMode = BetterListViewSearchMode.Substring;
-
-// use case-sensitive searching and play sounds
-BetterListViewSearchOptions searchOptions = (BetterListViewSearchOptions.CaseSensitive | BetterListViewSearchOptions.PlaySound);
-
-// search in the first and second column
-//NOTE: empty array also means searching in all columns
-int[] subItemIndices = new[] { 0, 1 };
-
-// set-up the search
-this.listView.SearchSettings = new BetterListViewSearchSettings(searchMode, searchOptions, subItemIndices);
-
-this.listView.EndUpdate();
- -

Visual Basic

-
ListView.BeginUpdate()
-
-' fill the ListView with items in two columns
-ListView.Columns.AddRange(
-    New BetterListViewColumnHeader() { _
-                                         New BetterListViewColumnHeader("Word", 128),
-                                         New BetterListViewColumnHeader("Synonym List", 160)
-                                     })
-
-ListView.Items.AddRange(
-    New BetterListViewItem() { _
-                                 New BetterListViewItem(New String() _
-                                                            {"apparently", "evidently, presumably, seemingly"}),
-                                 New BetterListViewItem(New String() {"blunt", "brusque, curt, snippy"}),
-                                 New BetterListViewItem(New String() {"class", "caste, estate, folk"}),
-                                 New BetterListViewItem(New String() {"detailed", "elaborate, full, thorough"})
-                            })
-
-' search in substrings
-Dim searchMode As BetterListViewSearchMode = BetterListViewSearchMode.Substring
-
-' use case-sensitive searching and play sounds
-Dim searchOptions As BetterListViewSearchOptions =
-        (BetterListViewSearchOptions.CaseSensitive Or BetterListViewSearchOptions.PlaySound)
-
-' search in the first and second column
-'NOTE: empty array also means searching in all columns
-Dim subItemIndices As Integer() = New Integer() {0, 1}
-
-' set-up the search
-ListView.SearchSettings = New BetterListViewSearchSettings (searchMode, searchOptions, subItemIndices)
-
-ListView.EndUpdate()
- -
- - - - - -
- - - -
- diff --git a/public/blog/wp-content/uploads/2013/01/chapter-serialization.html b/public/blog/wp-content/uploads/2013/01/chapter-serialization.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/chapter-serialization.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/lang-vb.js.html b/public/blog/wp-content/uploads/2013/01/lang-vb.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/lang-vb.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/prettify.css.html b/public/blog/wp-content/uploads/2013/01/prettify.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/prettify.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/prettify.js.html b/public/blog/wp-content/uploads/2013/01/prettify.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/prettify.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/01/properties.png b/public/blog/wp-content/uploads/2013/01/properties.png deleted file mode 100644 index 9113cd0..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/properties.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/screen-blv-binding1.png b/public/blog/wp-content/uploads/2013/01/screen-blv-binding1.png deleted file mode 100644 index bafa4de..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/screen-blv-binding1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/screen-blv-binding2.png b/public/blog/wp-content/uploads/2013/01/screen-blv-binding2.png deleted file mode 100644 index 8fff006..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/screen-blv-binding2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/screen-blv-binding3.png b/public/blog/wp-content/uploads/2013/01/screen-blv-binding3.png deleted file mode 100644 index 9087b20..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/screen-blv-binding3.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/search-highlight-1.gif b/public/blog/wp-content/uploads/2013/01/search-highlight-1.gif deleted file mode 100644 index 69a6cd6..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/search-highlight-1.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/search-highlight-2.gif b/public/blog/wp-content/uploads/2013/01/search-highlight-2.gif deleted file mode 100644 index 3f3dc1d..0000000 Binary files a/public/blog/wp-content/uploads/2013/01/search-highlight-2.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/01/style.css.html b/public/blog/wp-content/uploads/2013/01/style.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/01/style.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/chapter-multi-line.html b/public/blog/wp-content/uploads/2013/02/chapter-multi-line.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/chapter-multi-line.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/chapter-owner-draw.html b/public/blog/wp-content/uploads/2013/02/chapter-owner-draw.html deleted file mode 100644 index f90869f..0000000 --- a/public/blog/wp-content/uploads/2013/02/chapter-owner-draw.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -Owner Drawing - - - - -
-
- - - - -

Owner Drawing

- - - - - -

Owner drawing allow to customize appearance of any element, element - part and the control itself:

- -

- -

Drawing Over Control Parts

- - -

The simple way to draw over control parts is by using drawing - events:

- - -

Each of these events contains System.Drawing.Graphics - object in event data with which custom drawing is possible. Areas of - drawing are also provided. For example, to draw inside item inner area, - there is a - BetterListViewDrawItemEventArgs.ItemBounds.BoundsInner - property containing the rectangle.

- -

-

If you want to paint outside element areas, set - OptimizedInvalidation property to false. This - will ensure your custom drawing code will be called in every redraw - cycle.

-
-

Replacing Default Drawing by Custom Drawing

- - -

Owner drawing events are always called after the default drawing, so - it is possible only to draw over exisiting drawing. When you need turn off - some painting and do your own drawing instead of the default one (e.g. - draw rotated text instead the straight one), you have to create your - custom control inheriting from BetterListView:

- -

C#

-
class OwnerDrawBetterListView : BetterListView
-{
-    // ...
-}
- -

Visual Basic

-
Class OwnerDrawBetterListView Inherits BetterListView
-    ' ...
-End Class
- -

Then you can override one of the drawing methods:

- - -

This gives you more control over the painting, because your drawing - code can be called before or - after the default drawing, depending on where and if - you call base implementation.

- -

Every part of the default drawing has a switch so you can turn the - default drawing off. For example, if you want not to draw default text on - some item, set BetterListViewDrawItemEventArgs.DrawText - property to false.

- -

It is also possible to do custom drawing as the very last drawing of - the whole control. To do this, override DrawingRedrawCore - method and do your drawing after calling the base implementation:

- -

C#

-
protected override void DrawingRedrawCore(Graphics grfx)
-{
-    base.DrawingRedrawCore(grfx);
-
-    // do your custom drawing
-}
- -

Visual Basic

-
Protected Overrides Sub DrawingRedrawCore(grfx As Graphics)
-
-    MyBase.DrawingRedrawCore(grfx)
-
-    ' do your custom drawing
-    
-End Sub
- - -

Overriding Item and Control States

- - -

The appearance of element depends not only on its state, but also on - the control state.

- -

If you override one of the drawing methods (e.g. - OnDrawItem), you can modify event data before calling base - class implementation (e.g. base.OnDrawItem).

- -

For example, BetterListViewDrawItemEventArgs contains - ItemStateInfo property. By modifying this property, you can - force drawing item in any state you wish.

- -

BetterListViewDrawItemEventArgs also contains two - properties regarding control state:

- - -

By default, these properties correspond to actual control's state, - but they can be modified. For example, one may want to set - DrawFocused to true on every item that is selected, so the - item will be highlighted even if the control loses focus.

- -

The control state properties are available only in the - BetterListViewItemEventArgs, but element states can be - modified in all painting event handlers (also column headers and - groups).

- - -

Sample Source Code

- - -

The following sample shows owner drawing of item background:

- -

C#

-
this.listView.BeginUpdate();
-
-this.listView.Items.Add("Item with owner-drawn image and background.");
-
-this.listView.View = BetterListViewView.Tile;
-// turn off automatic image sizing to make space for image even when items do not have any images set
-this.listView.LayoutOptions = (BetterListViewLayoutOptions.Auto & ~BetterListViewLayoutOptions.AutoSizeItemImage);
-// set 4-pixel boundary around image
-this.listView.LayoutItemsCurrent.ImagePadding = new Padding(4);
-// set image size to be 50 by 50 pixels (it is possible to set image sizes for sub-items as well by adding more Size instances in the collection)
-this.listView.LayoutItemsCurrent.ImageSizes = new ReadOnlyCollection<Size>(new[] { new Size(50, 50) });
-
-this.listView.EndUpdate();
-
-// we would like to draw over item's foreground (custom image)
-this.listView.DrawItem += ListViewDrawItem;
-// we would like to draw over item's background
-this.listView.DrawItemBackground += ListViewDrawItemBackground;
- -

Visual Basic

-
ListView.BeginUpdate()
-
-ListView.Items.Add("Item with owner-drawn image and background.")
-
-ListView.View = BetterListViewView.Tile
-' turn off automatic image sizing to make space for image even when items do not have any images set
-ListView.LayoutOptions = (BetterListViewLayoutOptions.Auto And Not BetterListViewLayoutOptions.AutoSizeItemImage)
-' set 4-pixel boundary around image
-ListView.LayoutItemsCurrent.ImagePadding = New Padding(4)
-' set image size to be 50 by 50 pixels (it is possible to set image sizes for sub-items as well by adding more Size instances in the collection)
-ListView.LayoutItemsCurrent.ImageSizes = New ReadOnlyCollection(Of Size)(New Size() {New Size(50, 50)})
-
-ListView.EndUpdate()
-
-' we would like to draw over item's foreground (custom image)
-AddHandler ListView.DrawItem, AddressOf ListViewDrawItem
-' we would like to draw over item's background
-AddHandler ListView.DrawItemBackground, AddressOf ListViewDrawItemBackground
- -

DrawItem event handler draws on the item image - area:

- -

C#

-
void ListViewDrawItem(object sender, BetterListViewDrawItemEventArgs eventArgs)
-{
-    eventArgs.Graphics.SmoothingMode = SmoothingMode.HighQuality;
-
-    Pen pen = new Pen(Color.BlueViolet, 2.5f);
-
-    // draw ellipse in the image area
-    eventArgs.Graphics.DrawEllipse(
-        pen,
-        eventArgs.ItemBounds.SubItemBounds[0].BoundsImage);
-
-    pen.Dispose();
-}
- -

Visual Basic

-
Sub ListViewDrawItem(ByVal sender As Object, ByVal eventArgs As BetterListViewDrawItemEventArgs)
-
-    eventArgs.Graphics.SmoothingMode = SmoothingMode.HighQuality
-
-    Dim pen As New Pen(Color.BlueViolet, 2.5F)
-
-    ' draw ellipse in the image area
-    eventArgs.Graphics.DrawEllipse(pen, eventArgs.ItemBounds.SubItemBounds(0).BoundsImage)
-
-    pen.Dispose()
-
-End Sub
- -

DrawItemBackground event handler draws on the item - background area:

- -

C#

-
void ListViewDrawItemBackground(object sender, BetterListViewDrawItemBackgroundEventArgs eventArgs)
-{
-    Brush brush = new LinearGradientBrush(
-        eventArgs.ItemBounds.BoundsInner,
-        Color.FromArgb(64, Color.DarkSeaGreen),
-        Color.Transparent,
-        LinearGradientMode.ForwardDiagonal);
-
-    // draw over the item's background in the inner area
-    eventArgs.Graphics.FillRectangle(brush, eventArgs.ItemBounds.BoundsInner);
-
-    brush.Dispose();
-}
- -

Visual Basic

-
Sub ListViewDrawItemBackground(ByVal sender As Object, ByVal eventArgs As BetterListViewDrawItemBackgroundEventArgs)
-
-    Dim brush As Brush = New LinearGradientBrush(
-        eventArgs.ItemBounds.BoundsInner,
-        Color.FromArgb(64, Color.DarkSeaGreen),
-        Color.Transparent,
-        LinearGradientMode.ForwardDiagonal)
-
-    ' draw over the item's background in the inner area
-    eventArgs.Graphics.FillRectangle(brush, eventArgs.ItemBounds.BoundsInner)
-
-    brush.Dispose()
-
-End Sub
- -
- - - - - -
- - - -
- diff --git a/public/blog/wp-content/uploads/2013/02/chapter-performance.html b/public/blog/wp-content/uploads/2013/02/chapter-performance.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/chapter-performance.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/hot-item-backcolor.gif b/public/blog/wp-content/uploads/2013/02/hot-item-backcolor.gif deleted file mode 100644 index 11ff695..0000000 Binary files a/public/blog/wp-content/uploads/2013/02/hot-item-backcolor.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/02/lang-vb.js.html b/public/blog/wp-content/uploads/2013/02/lang-vb.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/lang-vb.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/owner-draw.png.html b/public/blog/wp-content/uploads/2013/02/owner-draw.png.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/owner-draw.png.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/prettify.css.html b/public/blog/wp-content/uploads/2013/02/prettify.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/prettify.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/prettify.js.html b/public/blog/wp-content/uploads/2013/02/prettify.js.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/prettify.js.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/02/style.css.html b/public/blog/wp-content/uploads/2013/02/style.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/02/style.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/03/blv-fading.png b/public/blog/wp-content/uploads/2013/03/blv-fading.png deleted file mode 100644 index fdbc81b..0000000 Binary files a/public/blog/wp-content/uploads/2013/03/blv-fading.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/03/blv-scroll-size.png b/public/blog/wp-content/uploads/2013/03/blv-scroll-size.png deleted file mode 100644 index 65876c8..0000000 Binary files a/public/blog/wp-content/uploads/2013/03/blv-scroll-size.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2013/index.html b/public/blog/wp-content/uploads/2013/index.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-content/uploads/2013/index.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/resources/main.css.html b/public/blog/wp-content/uploads/2013/resources/main.css.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/resources/main.css.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2013/resources/overview.gif.html b/public/blog/wp-content/uploads/2013/resources/overview.gif.html deleted file mode 100644 index a77b0e3..0000000 --- a/public/blog/wp-content/uploads/2013/resources/overview.gif.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- -
- - - -
- - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-content/uploads/2014/02/image.gif b/public/blog/wp-content/uploads/2014/02/image.gif deleted file mode 100644 index 1a93b9a..0000000 Binary files a/public/blog/wp-content/uploads/2014/02/image.gif and /dev/null differ diff --git a/public/blog/wp-content/uploads/2014/04/blv-alternating-rows.png b/public/blog/wp-content/uploads/2014/04/blv-alternating-rows.png deleted file mode 100644 index 6de3f56..0000000 Binary files a/public/blog/wp-content/uploads/2014/04/blv-alternating-rows.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2014/04/blv-gridlines-1.png b/public/blog/wp-content/uploads/2014/04/blv-gridlines-1.png deleted file mode 100644 index c657b05..0000000 Binary files a/public/blog/wp-content/uploads/2014/04/blv-gridlines-1.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2014/04/blv-gridlines-2.png b/public/blog/wp-content/uploads/2014/04/blv-gridlines-2.png deleted file mode 100644 index 0efdbc8..0000000 Binary files a/public/blog/wp-content/uploads/2014/04/blv-gridlines-2.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2014/07/blv-sub-item-checkboxes.png b/public/blog/wp-content/uploads/2014/07/blv-sub-item-checkboxes.png deleted file mode 100644 index a69737c..0000000 Binary files a/public/blog/wp-content/uploads/2014/07/blv-sub-item-checkboxes.png and /dev/null differ diff --git a/public/blog/wp-content/uploads/2014/08/blv-overlay.png b/public/blog/wp-content/uploads/2014/08/blv-overlay.png deleted file mode 100644 index 02d3033..0000000 Binary files a/public/blog/wp-content/uploads/2014/08/blv-overlay.png and /dev/null differ diff --git a/public/blog/wp-includes/js/comment-reply.min.js?ver=4.9.8 b/public/blog/wp-includes/js/comment-reply.min.js?ver=4.9.8 deleted file mode 100644 index 4042143..0000000 --- a/public/blog/wp-includes/js/comment-reply.min.js?ver=4.9.8 +++ /dev/null @@ -1 +0,0 @@ -var addComment={moveForm:function(a,b,c,d){var e,f,g,h,i=this,j=i.I(a),k=i.I(c),l=i.I("cancel-comment-reply-link"),m=i.I("comment_parent"),n=i.I("comment_post_ID"),o=k.getElementsByTagName("form")[0];if(j&&k&&l&&m&&o){i.respondId=c,d=d||!1,i.I("wp-temp-form-div")||(e=document.createElement("div"),e.id="wp-temp-form-div",e.style.display="none",k.parentNode.insertBefore(e,k)),j.parentNode.insertBefore(k,j.nextSibling),n&&d&&(n.value=d),m.value=b,l.style.display="",l.onclick=function(){var a=addComment,b=a.I("wp-temp-form-div"),c=a.I(a.respondId);if(b&&c)return a.I("comment_parent").value="0",b.parentNode.insertBefore(c,b),b.parentNode.removeChild(b),this.style.display="none",this.onclick=null,!1};try{for(var p=0;p",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.find,s=a.parseJSON,t=/^\s*)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=w.exec(a.trim(b)))&&g[0]&&(t.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&e.context.nodeType&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):(h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&u.test(a))try{document.querySelector(a)}catch(c){a=a.replace(v,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),d("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){d("Attribute selector with '#' was not fixed: "+b[0])}}return r.apply(this,b)};var x;for(x in r)Object.prototype.hasOwnProperty.call(r,x)&&(a.find[x]=r[x]);a.parseJSON=function(a){return a?s.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var y=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return y=!0,a=d.apply(this,arguments),y=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};y||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var z=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?z.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var A=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||A.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var B=a.event.add,C=a.event.remove,D=a.event.trigger,E=a.fn.toggle,F=a.fn.live,G=a.fn.die,H=a.fn.load,I="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",J=new RegExp("\\b(?:"+I+")\\b"),K=/(?:^|\s)hover(\.\S+|)\b/,L=function(b){return"string"!=typeof b||a.event.special.hover?b:(K.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(K,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&J.test(b)&&d("AJAX events should be attached to document: "+b),B.call(this,a,L(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){C.call(this,a,L(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?H.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return E.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;ga?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; -}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n(" - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Factivation-issues-and-how-to-solve-them%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Factivation-issues-and-how-to-solve-them%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Factivation-issues-and-how-to-solve-them%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Falternating-rows-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-50-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-1-52-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-samples-preview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-0-sneak-peek-item-hierarchy-groups-more%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-00-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-1-optimizations-done-minor-features-and-testing%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-2-10-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-reviewed-at-devproconnections-com%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-listview-tip-how-to-draw-custom-selection%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbetter-thumbnail-browser-component-released%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fbinding-images-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fblv-and-internet-explorer%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcentering-images-in-better-listview-sub-items%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcombined-items-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcoming-soon-better-listview-2-1-optimized-for-performance%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-behavior-of-group-headers-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-item-height-in-details-view-of-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-label-edit-how-to-rename-file-names-without-extension-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-scroll-bar-size-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustom-spacing-between-items-in-details-view%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fcustomize-label-editing-embedded-control-for-each-line-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplaying-thumbnails-withs-borders-and-shadows%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fdisplayingmultiline-items-in-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fenabling-search-highlight-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ffile-explorer-with-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-column-headers-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhiding-items-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhot-tracking-items-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-add-grid-lines-in-empty-space-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-change-list-view-mouse-wheel-scroll-speed%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-display-items-in-custom-states%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-dynamically-resize-focused-item%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-hide-a-column-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-make-items-fading-on-edges-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fhow-to-store-better-listview-content-in-a-string-user-request%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Flist-view-drag-and-drop-item-reorder-sort%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fnon-selectable-items-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fread-only-mode-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fright-aligned-images-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsearch-filtering-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsub-item-check-boxes-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fsynergy-of-better-listview-and-our-applications%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Ftedious-work-with-groups-and-item-hierarchy-features%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fthe-three-main-advantages-componentowl-has-over-the-classic-net-framework%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fvertical-alignment-and-text-wrapping-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwhat-we-are-working-on-groups-item-hierarchy-support%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fwindows-theme-support-in-better-listview%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F&format=xml.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F&format=xml.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F&format=xml.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F.html b/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F.html deleted file mode 100644 index be71cc0..0000000 --- a/public/blog/wp-json/oembed/1.0/embed?url=http:%2F%2Fwww.componentowl.com%2Fblog%2Fzen-coder-vs-distraction-junkie%2F.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/xmlrpc.php.html b/public/blog/xmlrpc.php.html deleted file mode 100644 index 1e42e3e..0000000 --- a/public/blog/xmlrpc.php.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/blog/xmlrpc.php?rsd b/public/blog/xmlrpc.php?rsd deleted file mode 100644 index 2ac2d3a..0000000 --- a/public/blog/xmlrpc.php?rsd +++ /dev/null @@ -1,14 +0,0 @@ - - - WordPress - https://wordpress.org/ - http://www.componentowl.com/blog - - - - - - - - - diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1217.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1217.html deleted file mode 100644 index fc35697..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1217.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Wolfram Arnold

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1218.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1218.html deleted file mode 100644 index 9c4a4e0..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1218.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Kyle Ellingworth

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1219.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1219.html deleted file mode 100644 index 9a2dcb0..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1219.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1220.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1220.html deleted file mode 100644 index c5eff65..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1220.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to G

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1221.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1221.html deleted file mode 100644 index 1eadf28..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1221.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1222.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1222.html deleted file mode 100644 index 3846355..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1222.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Orgil

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1224.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1224.html deleted file mode 100644 index ac2140e..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1224.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1225.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1225.html deleted file mode 100644 index b95d9a3..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1225.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jad Jabbour

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1226.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1226.html deleted file mode 100644 index 10aa7c5..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1226.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1227.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1227.html deleted file mode 100644 index 21d3227..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1227.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jad Jabbour

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1228.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1228.html deleted file mode 100644 index cefd924..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1228.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Cristobal

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1229.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1229.html deleted file mode 100644 index c163c25..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1229.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to sissi

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1232.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1232.html deleted file mode 100644 index c61eebe..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1232.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Bipin

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1233.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1233.html deleted file mode 100644 index 7e12ef3..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1233.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Timon Vonk

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1234.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1234.html deleted file mode 100644 index 77a378f..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1234.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Murat Özgür Kaymakcı

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1235.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1235.html deleted file mode 100644 index 7173d0f..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1235.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Daniele

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1236.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1236.html deleted file mode 100644 index 655cdb3..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1236.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jeff

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1237.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1237.html deleted file mode 100644 index 220a4b9..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1237.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Raphael

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1238.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1238.html deleted file mode 100644 index dac2db2..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1238.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Nish

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1239.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1239.html deleted file mode 100644 index dda118b..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1239.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Dave East

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1241.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1241.html deleted file mode 100644 index 3fcb16d..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1241.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to alex

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1242.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1242.html deleted file mode 100644 index dde51a4..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1242.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Karthik Murugan

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1243.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1243.html deleted file mode 100644 index deb4bde..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1243.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1244.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1244.html deleted file mode 100644 index 8c3da52..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1244.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Mr.excepter

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1245.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1245.html deleted file mode 100644 index a635617..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1245.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Luigi

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1246.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1246.html deleted file mode 100644 index 463a3da..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1246.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to anon

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1247.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1247.html deleted file mode 100644 index 636b872..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1247.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Juanjo

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1248.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1248.html deleted file mode 100644 index 7cdd605..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1248.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to pw

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1249.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1249.html deleted file mode 100644 index 6cb17f1..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1249.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to CharlieBear

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1250.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1250.html deleted file mode 100644 index 9af99d3..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1250.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Ryan

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1251.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1251.html deleted file mode 100644 index 7e3ed75..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1251.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Douglas

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1252.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1252.html deleted file mode 100644 index 8326dcc..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1252.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Dan Sutton

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1253.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1253.html deleted file mode 100644 index 86566b6..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1253.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to alex

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1254.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1254.html deleted file mode 100644 index 399b992..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1254.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Carlos López

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1255.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1255.html deleted file mode 100644 index 285ff7c..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1255.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1256.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1256.html deleted file mode 100644 index bc78622..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1256.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to pat

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1257.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1257.html deleted file mode 100644 index 22b05ec..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1257.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Christian

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1258.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1258.html deleted file mode 100644 index b5f21fd..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1258.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to dario-g

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1259.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1259.html deleted file mode 100644 index 29b91b7..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1259.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Bob

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1262.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1262.html deleted file mode 100644 index ea31053..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1262.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Emanuel Landeholm

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1263.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1263.html deleted file mode 100644 index 9814d2f..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1263.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1264.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1264.html deleted file mode 100644 index 9a29751..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1264.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Brett L. Schuchert

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1265.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1265.html deleted file mode 100644 index 2da8cf8..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1265.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Carl

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1266.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1266.html deleted file mode 100644 index 343003b..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1266.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Kemal Delalić

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1269.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1269.html deleted file mode 100644 index b4441ff..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1269.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to minime

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1270.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1270.html deleted file mode 100644 index ff8a583..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1270.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Ivan

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1272.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1272.html deleted file mode 100644 index 6b2df30..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1272.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to sigs

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1273.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1273.html deleted file mode 100644 index b156fd8..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1273.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Jiri Novotny

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1274.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1274.html deleted file mode 100644 index 636d94a..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1274.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Umair Jabbar

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1275.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1275.html deleted file mode 100644 index a9b6327..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1275.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Sunday Selection 2012-03-11 « The ByteBaker

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1282.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1282.html deleted file mode 100644 index bb88040..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1282.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to bluszcz

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1283.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1283.html deleted file mode 100644 index e9acf7f..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1283.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Amir

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1288.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1288.html deleted file mode 100644 index 3508829..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1288.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Himanshu Mishra

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1365.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1365.html deleted file mode 100644 index 06af2a2..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1365.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Foobar

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1397.html b/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1397.html deleted file mode 100644 index 0b590a3..0000000 --- a/public/blog/zen-coder-vs-distraction-junkie/index.html?replytocom=1397.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -Are You a Zen Coder or Distraction-Junkie? « Owl's Blog on .NET development - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -

Owl's Blog on .NET development

- -
Component Owl codes Better ListView control all night so you don't have to.
- - - - -
-

Are You a Zen Coder or Distraction-Junkie?

- - - -
-

What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

-

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

-

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll –

-

Why am I writing this

-

I recently started implementing certain time management techniques into my work style to boost my productivity, reduce stress, and help my body and brain rest. I basically wanted to work in uninterruptable 100% focused 60-120 minutes blocks of time, followed by a 20-30 minute breaks.

-

However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.

-

So I decided to do some research. There was a discussion on “What to do while compiling?” on StackExchange. The most up-voted answers were of the “reduce the compilation time” kind. However, these answers don’t solve the more general problem: There will always be waiting times while working on the computer.

-

Other than that, the people in the discussion were mostly suggesting what they usually do (such as checking email or news) – which is a horrible idea. One good advice was that “Multi-tasking is bad”. I agree with that. But overall? Not. Good. Enough. The answers were disappointing. So, in this article, I am going to explore this issue deeply and present you with the optimal approach.

-

Two kinds of coders

-

There are two extreme archetypes of coders – The “zen coder”, and the “distraction junkie coder”. Both are extreme, so both should be rare on the bell curve of distribution, right?

-

Wrong. Although the “Distraction junkie coder” is, in fact, extreme, he is unbelievably prevalent.

-

A picture is worth 1000 words, so I am going to show you, with pictures, what is happening on the mental desktops of both of these kinds of coders.

-

The zen coder

-

What does zen coder do?

-

He codes. That’s the only thing he does, and that tells it all. Perhaps the more important question is what he does not do: He does not succumb to distractions. Clean focus. Clean cuts. Clean coding. 60-120 minutes of pure coding, then a 20-30 minute break, which is usually off the computer. Then he codes again. (The minutes are just an example. He can use a different pattern – but he is always balanced and betting on the long-term productivity.)

-

His mind is like calm fluid water with a steady flow. It is not like frozen water shattered to 1000 constantly shaking pieces.

-

This is how the mental desktop of zen coder looks like:

-

Zen coder's mental desktop

-

The distraction junkie coder

-

Even if your mental desktop looks like the one of a zen coder, just a few minutes after you open Facebook and check your email – e.g. when compiling, it will look like this:

-

Distraction junkie coder mental desktop

-

And that is, ladies and gentlemen, after just merely checking your email and opening Facebook! If you also have a bunch of real-time notifications, IMs, and check your RSS and twitter, the above will look like a scheme of a meditating monk’s brain compared to the havoc you will break.

-

You will probably never fully recover from that. Not on that particular day, anyway. Even if you minimize all this crap on your mental desktop to your mental taskbar, it will remain there, tempt you forever, and eat up your mental resources. And boy, the time will fly by, and you will wonder where it went.

-

Oh, and by the way, if you are distraction junkie, then you must check out our web comics for developers! Don’t even return to finish reading this article. And don’t forget to subscribe to the comics RSS! And read all the strips! Then send it to your buddy, and start chatting! The distraction-rabbit holes are not that deep, really!

-

The difference between zen coder and distraction junkie coder

-

Zen coder prefers long-term happiness and productivity. He is capable of focusing deeply. He trains focus.

-

Distraction junkie coder prefers instant gratification for the price of not reaching his full potential and hurting himself both physically and mentally in the long run. He is too lazy to focus.

-

To fully grasp this, we first need to understand how our brains work.

-

How our brains work

-

The truth is that we don’t really know, yet. But, based on our current understanding, there are some useful analogies that psychologists have been putting to a good use for some time, and that can help us grasp some of the complexities.

-

The computer analogy

-

Your brain is a computer. Sure, it is infinitely more complex than a PC, but the computer metaphor allows us to describe many processes that are going on in the brain. There is something like HDD, there is something like RAM, CPU, there are processes and threads, and it takes certain amount of time to access information and to calculate things.

-

It is obvious that our brain has only a certain capacity to focus at any particular moment. You can focus on 1 thing well, or on 3 things badly, but you can’t do both. Even switching from one task to another carries a cognitive cost, especially if the tasks are in different contexts.

-

Once you bring something to your awareness, it takes time to fully dispose of it and its associated resources and to purge it from your mental RAM and background processes. It can even take hours or days. Things recently brought to your awareness constantly re-appear at random moments. Even if you do not notice them floating in your mind, they are there – and they take up resources, and reduce your ability to focus.

-

The chest of drawers analogy

-

Another useful metaphor is a chest of drawers. Your brain stores stuff in drawers. Each drawer is a cloud of data associated and linked together based on certain contexts and concepts. At any particular time, some of the drawers are open, and some closed. The open drawers represent your current mental landscape, the stuff that is easily accessible.

-

The big problem is that it takes time to close mental drawers, but opening them is instant.

-

So, when you are working, and then switch to some news site, it can instantly open a bunch of drawers. When you return to work, these drawers will remain open. The only benefit is it can help you with creativity and brainstorming – but unnecessarily opened drawers come at a cost. They reduce your left-brain raw mental power and ability to focus.

-

What to do while compiling?

-

What you do when waiting for some computer operation to execute can determine if you are a zen coder, or distraction junkie coder.

-

The main idea here is to:

-
    -
  1. Not lose focus, and
  2. -
  3. Take a micro break.
  4. -
-

Not losing focus is not that hard – all you have to do is to switch your brain off, or keep thinking about your code. However, switching off is better. It’s a micro-meditation, and it also serves our goal of taking a micro-break.

-

Why meditation? Well, your brain is crunching code all day, so why not give it a rest? Plus it’s scientifically proven that meditation leads to permanent increase in levels happiness. Just imagine the long term benefits of this seemingly trivial habit of meditating for 30-60 seconds couple of times per day.

-

Now, what to do on your micro-break? Do any of the following, combine as you wish. You can also do them all, in this order, depending (or not) on how long is the operation taking.

-
    -
  1. Get up
  2. -
  3. Look into distance
  4. -
  5. Put your hands behind your head and lean back on your chair
  6. -
  7. Stretch your legs, then raise your hands as high as possible
  8. -
  9. Close your eyes
  10. -
  11. Gently massage your eyes
  12. -
  13. Slowly turn your head to the right, left, up and down as far as possible
  14. -
  15. Close your eyes and breathe
  16. -
  17. Go get a glass of water (Be careful not to get distracted by your co-workers on your way.)
  18. -
-

You can do also anything else that engages primarily your body and not mind – isometrics exercise, juggling, sword-fighting ;-).

-

And by the way – if your boss gives you hard time about any of this, then refer him to this article. It is far better for you to quickly rejuvenate yourself and maintain focus than to appear working and get distracted, lose focus and become tired sooner.

-

Stretching can be very beneficial. My physiotherapist discovered a lot of tension in my shoulders on my last visit. She told me that it’s there probably because I have my hands bent all the time when siting at the computer, so the muscles shorten and work uneconomically. The best thing I can do? Lift and move my hands, try to reach as high as possible. That’s now one of the things I do when compiling or waiting for a computer operation to execute.

-

You’ve probably heard that it is a good idea to stretch and take a short break regularly when working on the computer. The problem is the implementation – even if you set a timer, what if you are in a middle of a difficult problem when it goes off? It’s just seems impossible to implement. However, if you take the micro-break while compiling, it works great and you can even make a habit out of it, so it gets “automated”! The compilation now becomes your reminder to stretch. Incredibly powerful stuff.

-

The things you shouldn’t do when compiling

-

I really want to hammer my point home, so just to make things absolutely clear, here is a list of what you should NOT do when compiling. Think of it this way: These things will not just ruin your focus, but you will deprive your mind and body of the micro-break.

-
    -
  1. Check your RSS
  2. -
  3. Check news (any news)
  4. -
  5. Check email
  6. -
  7. Check social media (Facebook, twitter, G+, LinkedIn, reddit – you name it)
  8. -
  9. Watch videos
  10. -
-

Doing the following 2 things is better than all of the above, but it is still not optimal:

-
    -
  1. Chat with a co-worker
  2. -
  3. Read a physical book
  4. -
-

Clean Focus and Clean Cuts

-

I will close this article with what I think is the ideal approach to daily work-flow – the zen coder way.

-

The key to true productivity and efficiency is to focus 100% on the one thing you are doing at the moment, and then to completely switch and do something else. There shouldn’t be any blurry transitions from one thing to the next.

-

Divide your time into 60 – 120 minutes blocks of work. Focus 100% percent in these blocks of time. Then take a 20-30 minute break and do something else entirely. You can check your email and social media during the break, sure, but a brisk walk or a short nap and healthy snack will do you more good. After the break is over, check what’s next in your task management software (e.g. I use my own Swift To-Do List), and do another block of focused work. It is somewhat similar to Pomodoro technique, only on a larger scale.

-

The breaks are not optional. Don’t even think about skipping them. Your body needs them. Take the breaks even if you do what you love – in such a case, you will be motivated to accomplish more in the next time block.

-

Your work-flow should look something like this:

-

(Task 1 – Task 2) – Break – (Task 2 – Task 3 – Task 4) – Break – (Another 60-120 minute block of tasks) – Break…

-

And not something completely chaotic, random and sad, like this:

-

Task 1 – Email – Task 1 – Facebook – Task 1 – Task 2 – Minibreak – Facebook – Task 2 – Email – reddit – Task 3 – Email – Break – Task 2 – Email – Task 3 – twitter – Hacker News – twitter – Task 1 – Task 3 – Break – Task 4

-

If your workflow is sub-optimal like that, you will neither fully relax nor accomplish what you could. This is inferior on every level. It is not just a waste of your potential and time, but often also completely unnecessary wreckage of your body in the long run.

-

I won’t lie to you. Focusing is really hard. It’s hard, because when you are not doing it, you are basically training the opposite. Habits and ingrained routines are inherently hard to change.

-

The good news is you can train. You can learn to focus. It’s a learnable skill for everyone, and incredibly well worth the effort.

-

– By , the obsessed author of task management software for Windows. He is posting this guest article here on ComponentOwl.com, because his Swift To-Do List uses .NET Better ListView from Component Owl as its core component.

-

PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.

- -
- - - - -
- - - - - -

55 Responses to “Are You a Zen Coder or Distraction-Junkie?”

- -
    -
  1. -
    -
    - Wolfram Arnold says:
    - - - -

    Great article. I agree with the premise. On the solution side, I find pair programming the single most effective technique to avoid distraction junkie behavior. After all who wants to be seen browse the news or update Facebook by their colleague? And during small waits, just talk with your pair as to what to do next, how to refactor the code, get up and stretch, get a cup of tea, etc.

    - - -
    -
      -
    • -
      - - - - -

      Agreed. I just joined a team after years of training/coaching. Working in pairs make focus so much easier. Also, one computer and two people make it harder to do the social media thing. Recently, my pair partner and I (the partner changes) frequently look at side stuff around our project during a build (with unit tests and functional tests running). This kind of focus is fun for me. It does make it easy for me to not even want to use a computer when I get home in the evening… at least some days.

      - - -
      -
    • -
    -
  2. -
  3. -
    -
    - Kyle Ellingworth says:
    - - - -

    Jiri. I first off want to say that I believe what you’ve written to be correct, or at least careful in tentatively stating things you haven’t confirmed as fact. I also believe it to be immensely useful to people chronically suck in their own self-harming cycles, be it distraction or demotivation or anxieties.

    -

    I want to criticize you in how you go about meeting your goals. I should let you know that I’m operating on a few assumptions. The first is that a normal rational human being is skeptical to new information they find. The second is that normal rational human beings reject things which they cannot confirm to a critical threshold. The third is that, when it comes to their own minds, the skepticism is increased at least ten-fold.

    -

    Your presentation meets exactly that failure. You present your methodologies in a clear, accessible way, to people who have no reason to trust you. The information is narrow in scope, and largely consists of abstractions of an inner cognitive model you have, and how new techniques relate to your model. As this is all new information to your reader, the amount of points a reader can identify with are limited. The number of reassuring moments of agreement, where you say something the reader already knew themselves, is limited. Thus, the user faces sustained unverified facts, and their skepticism gets more and more impatient. I’d reckon most readers wouldn’t even make it through the article without dismissing you as yet another useless writer who thinks they’ve figured out the world.

    -

    “all you have to do is to switch your brain off” is extremely vague and meaningless language, despite knowing all of the things I know now, I have yet to achieve such a thing. In fact, the entire meditation connection was weak, because you claim benefits, but never tie it into the original point. “He is too lazy to focus.” is not only a potential insight to your self-confident reader, but also a reassurance that people are who we are, and cannot change. People aren’t lazy, they just sometimes get stuck in loops which diverge them from reaching their goals, or their goals are misaligned with their objects, or a number of other temporary transient reasons.

    -

    Sorry, I’ve written a lot and I don’t feel like continuing. If you’ve read through this post completely dismissive of my points, then at least take the time to analyze which thoughts lead to your dismissals, and where those thoughts came from and shall lead…

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Kyle,

      -

      Thanks for your comments.

      -

      What I’ve written works for me. It has taken me many years of trial-and-error to discover this approach. I also know it works for others – but that’s just anecdotal evidence, and every human being is a bit different.

      -

      The best way to verify if something works for me is to simply try it, and I think that’s valid approach for most. If what I wrote makes sense to someone, he can just try it.

      -

      But you are, of course, right – I could’ve been much more convincing. I will definitely work on that, as I always want to hone my skills as a writer.

      -

      Have a wonderful day, Kyle, and once again, thanks for writing.

      - - -
      -
        -
      • -
        -
        - Nish says:
        - - - -

        Well said, to both of you. Finally, evidence that mature, stimulating, respectful & thought provoking debate can occur in web comments!

        - - -
        -
      • -
      • -
        -
        - Ivan says:
        - - - -

        For what is work Jiri, I don’t know anything about you at all. But I do have a brain and can reason things, so I don’t need to trust you to be able to learn from what you wrote :)

        -

        It really drove a point home, and I thank you for the lots of productivity I’m about to start gaining.

        -

        Tabs BE-GONE!

        -

        Also, I’ve wanted to gain some fitness for a long time now, so I’m gonna start doing some push-ups during my micro-breaks, and perhaps do a run during a larger break, so my body thanks you too :)

        - - -
        -
      • -
      -
    • -
    -
  4. -
  5. -
    -
    - G says:
    - - - -

    The distraction junkie thinks outside the box and may well come up with better solutions.

    -

    The “zoned-out” coder, is boxed in.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is no question that outside inputs can be beneficial for creativity. The problem lies in when these outside inputs are consumed.

      - - -
      -
        -
      • -
        -
        - sigs says:
        - - - -

        It’s a balancing act. Also, multitasking is a very personal thing. I might be your distraction junkie coder; and sometimes I really wish I could pull myself together more forcefully and just Get Shit Done 100% of some time interval…

        -

        alas, that’s not how it goes. If I want, I can focus, but the result isn’t much better. I might get trapped in a loop of not finding the (later) obvious solution and just walk in circles. That’s no fun either.

        -

        On the other hand, I often notice that after a break – be it walking a round or opening facebook, reading the updates and then closing it – my brain has done the work for me. I think of it as distancing and returning. Work on it and push it as far as it goes; when it gets stuck, take some distance, return and see if it looks different now.

        -

        Obviously if it’s badly stuck (for, say, days) I get frustrated and blame it on distractions and my inability to focus. But at the same time, I know I’m not just turning a crank. I mean, 95% of the time I am, obviously, but the remaining 5% is the art and the craft, the part that justifies them having me doing it and not the 18-year-old fresh off high school.

        -

        My two cents.

        - - -
        -
      • -
      -
    • -
    -
  6. -
  7. -
    -
    - Orgil says:
    - - - -

    Why did you spend so much time to write this article if you are zen coder?
    -i agree with you if you are zen blogger writing about the coding :)

    -

    btw, i like your pictures how you depict mental metaphor

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      There is nothing wrong doing 2 or more different things. I’m not trying to imply that at all.

      -

      Wrong is if you try to do them all at once.

      -

      (And by the way, this post is my weekend and after-work project.)

      - - -
      -
    • -
    -
  8. -
  9. -
    -
    - Jad Jabbour says:
    - - - -

    Hey, nice article, interesting theory but i beg to differ and i will do so by giving 2 examples.

    -

    my theory: It differs from one person to the other, and multi-tasking can be a good thing.

    -

    1- Albert Einstein came up with his best theories while he was working at the post office a rote, boring monotonous job ( like checking your feeds, which has become natural to us ).

    -

    2- I do have , as a coder, time management problems but the problem is not that, i work best when i am multitasking and i solve problems faster than when i am fully focused ( i;ve experimented ) but i have found that the main reason i have time management problems is because we developers lose interest when we are in code-monkey mode, there are no solutions to think of, we already solved it, we have our flow charts and UMLs and are simply coding away, it’s boring REALLY REALLY BORING and uninteresting. As soon as i face a bug/error my brain kicks into overdrive. also the closer i am to the deadline the more my brain is in overdrive.

    -

    there might be some truth to what you wrote but i do believe it differs from one person to the other.
    -anyone else feels this way ?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Hi Jad,

      -

      1) I also get my absolutely best ideas when in the shower, or on my way to work, or when cooking. But that is not in conflict with what I wrote at all.

      -

      Imagine Albert Einstein writing some theory on a blackboard, and constantly checking his twitter and email. That’s the problem. Not doing something else and letting your subconscious mind work.

      -

      2) In this case, Pomodoro and other anti-procrastination techniques help. In my case, I just launch some upbeat music and code away. It is actually a quite joyful experience.

      - - -
      - -
    • -
    -
  10. -
  11. -
    -
    - Cristobal says:
    - - - -

    Nice article!. I’m definitly a Distraction-Junkie one. I’m taking your article like a “from Distraction-Junkie to Zen-Coder” guide ;).
    -Thanks.

    - - -
    -
  12. -
  13. -
    -
    - sissi says:
    - - - -

    it is hard to get into that “flow” of coding anyways in many workplaces. quite often there are like five managers for two coders and you constantly have someone approaching your desk or waffling nearby. on the other hand when it’s too quiet it is kind of awkward too so I prefer very much to code locked away on my own.

    -

    the only problem is that when coding alone i feel constantly hungry and eat all the time :-D

    -

    it also helps to physically power yourself out before you code as otherwise your body gets in the way and you want to move and do physical stuff rather than sit and focus. some physically demanding yoga practise like ashtanga or vinyassa is good as it gives your body the workout he needs and prepares/focuses your mind.

    -

    being focused needs to be practised every day all the time. so reading an article or book without the mind wandering off or listening to another person talking without thinking of your to-do-list needs to be practised constantly otherwise your attention span will get shorter and shorter.

    -

    i read a quote of some zen master once that goes something like this and sums the issue up nicely. the master was talking to a student who was complaining about that meditation is boring (i think): “you lie but you’re sitting already. you sit but you’re standing already. you stand but you’re walking already. when I lie I am lying. when I sit I am sitting. when I stand I am standing and when I walk I am walking.”

    - - -
    -
  14. -
  15. -
    -
    - Bipin says:
    - - - -

    Nice article.Ran into this while i was programming :D

    - - -
    -
  16. -
  17. -
    -
    - Timon Vonk says:
    - - - -

    Great article! I would even go so far as stating that the main thing differentiating great and average programmers is just this; getting the flow right to supercharge productivity.

    -

    As a CTO, I code only part time, and sometimes not at all. However, that does imply that the time I do spend coding, has to be as effective as possible. I recently started experimenting with morning workouts — quick and timed — giving me huge amounts of energy for the rest of the day. Also, adrenaline helps you focus. Secondly, for timeslots I prefer the pomodoro technique. Macs have some great tools for this. The thirty minute slots with a timer force you to concentrate. Stating what you are going to do for the next slot commits your mind and _really_ helps you to maintain focus. Combined with planning your day every morning and saying to yourself: “This is what I’m going to finish”, is has awesome effects.

    -

    Finally, no notifications. Not for mail, skype, twitter, adium or IRC. If its important, people should call, else they’d have to wait a while. Not even highlighted icons.

    - - -
    -
  18. -
  19. -
    - - - - -

    very good point for productivity and time management. You should write more about this topic, maybe a being zen coder guide :) thank you.

    - - -
    -
  20. -
  21. -
    -
    - Daniele says:
    - - - -

    i just read this while a clean and build, no joking….

    - - -
    -
  22. -
  23. -
    -
    - Jeff says:
    - - - -

    I find that depression begets distraction-junkie behavior, which begets further depression.

    -

    To sit at a computer all day and be happy requires that one regularly reach ‘the zone’. In order to reach this state, one must have significant mastery of his or her domain. Constantly having to decipher terrible documentation and work in a hideous or convoluted codebase inhibits this. After enough resultant distress and little sense of mastery, a person loses interest and begins to search for the brief doses of accomplishment and satisfaction from other sources.

    -

    The next time you stall out on a difficult or irritating problem, do you Alt-Tab to [favorite social bookmarking site]? If so, you’re substituting momentary distraction and discovery for real accomplishment, to the detriment of both.

    -

    If you find yourself unable to break this cycle, consider whether you may have fallen into depression.

    - - -
    -
  24. -
  25. -
    -
    - Raphael says:
    - - - -

    I feel your pain. I could never go back to the old ways of developing in java or .net when programming finally reached a point where the developer productivity and conformt is more important that over engineered, over complicated, over bloated architectures.

    -

    Simplicity is a great asset towards reaching zero turn-around.

    - - -
    -
  26. -
  27. -
    -
    - Dave East says:
    - - - -

    You just listed ALL of those things I do on a microbreak! (the good ones, not the bad ones :P)

    - - -
    -
  28. -
  29. -
    -
    - alex says:
    - - - -

    I would say chatting with a coworker is even worse than a computer-related distraction. If you’re checking your RSS and see that the compiler is done, you can close it and run the program. If you’re chatting with a person and the compilation finishes, there’s typically a social taboo against just turning your back on them.

    - - -
    -
  30. -
  31. -
    -
    - Karthik Murugan says:
    - - - -

    Just wondering, if listening to music while coding causes any distraction?

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      The research mentioned in “Peopleware” book suggests that listening to music counter-intuitively reduces your creative abilities. The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks. On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.

      -

      My rule of thumb would be to listen to music only when doing routine stuff/work where you don’t need to think much, and use silence or white-noise when working on creative or difficult tasks. If your environment is noisy, you can also consider noise-cancelling headphones – the added benefit is that people will be less likely to disturb you.

      - - -
      -
        -
      • -
        -
        - alex says:
        - - - -

        “The music engages (and “occupies”) the right-part of your brain, which is used for creative tasks.”

        -

        Right.

        -

        “On the other hand, music helps you to stay in the flow, and can help with the left-brain tasks.”

        -

        Wait, this is the opposite of what you just said. I don’t remember this part in Peopleware.

        - - -
        -
          -
        • -
          -
          - Jiri Novotny says:
          - - - -

          Peopleware (Second edition) talks about music & productivity in the chapter Bring Back the Door, page 78.

          -

          But you are right, that part with staying in the flow was not in Peopleware. That’s just my observation.

          -

          Peopleware is highly critical of listening to music while working.

          -

          It also says: “As any kid who does his arithmetic homework with the music on knows, the part of the brain required for arithmetic and related logic is unbothered by music – there’s another brain center that listens to music.”

          -

          It all depends on the situation. For example, factory workers have better productivity when music is playing. That’s why I was saying it’s good for staying in the flow – however, that was a very unfortunate expression. What I really meant is that it’s good for routine stuff, including administrative tasks and mindless implementation where thinking is not needed. For me, music can produce euphoria while doing these otherwise mindless tasks. I can then turn it off and proceed with the regular tasks where creativity is certainly a huge benefit.

          -

          This is a good resource if you want to discover more about the relationship and productivity:

          -

          http://www.workplacedoctors.com/wpdocs/qdetail.asp?id=1297

          -

          The results of studies done to this day are mixed. IIRC, I’ve seen one study that claimed students taking a math test performed better when listening to classical music during the test. But, there are also several other studies that show different results.

          - - -
          -
        • -
        -
      • -
      -
    • -
    -
  32. -
  33. -
    -
    - Mr.excepter says:
    - - - -

    wow,zen coder,awesome!!!
    -I used be a Distraction-Junkie coder,and I have found the same way to make my work more Efficiently.
    -but I want to konw that if there are some exceptions in other business need Distraction-Junkie,maybe we can
    -settle this Contradiction.

    - - -
    -
  34. -
  35. -
    -
    - Luigi says:
    - - - -

    Very intresting… But if I was not a distractionjunkie developer, I never found this article. :)

    - - -
    - -
  36. -
  37. -
    -
    - anon says:
    - - - -

    reached this article during one such regular distraction for HN. so not entirely wasted. but i haven’t started working on my million dollar idea, so sadly very true. bookmarking it! and blocking hn, reddit… in hosts file.

    - - -
    -
  38. -
  39. -
    -
    - Juanjo says:
    - - - -

    It’s absolutely true, but done that I can’t always be a zen coder I try to have distractions after the code compiles so that I am bored of distractions while it compiles and still can have errors. I admit neither it works too well …
    -I think the solution could be to write news insulting us for being lazy, and so we would get motivation to continue working.

    - - -
    -
  40. -
  41. -
    -
    - CharlieBear says:
    - - - -

    Bulls-eye! Some really good tweeking ideas for design and coding issues have come with eyes closed while waiting on a compile or upload. I not a Zen developer yet but will work on your idea and see if I can get to the next level with less STRESS! You are 100% correct about the downside of being a distraction junkie. Thanks for a great article!

    - - -
    -
  42. -
  43. -
    -
    - Ryan says:
    - - - -

    Very interesting article, and I mostly agree with all of it. Multitasking can be dangerous and distracting, however, where I work, my communication with different departments is critical, so I can’t go not-checking-my-email for three hours. I definitely do things like check my email, maybe chat, during build time. These things are so quick I can stop immediately and go back to working. I do however avoid things like facebook/reddit/slashdot, because those are less likely the engagements I can quickly drop as soon as my build is done. Just my two cents, some people might have more self control over others when it comes to getting back to work.
    -Also, I find I’m most productive when I have a more-than-full pipeline (i.e, many more tasks to work on with little time to do them all)

    - - -
    -
  44. -
  45. -
    -
    - Douglas says:
    - - - -

    I actually really enjoyed this article and will be sharing with a lot of people. I must say that I struggle with this exact problem of checking dev blogs and social feeds of developers while waiting for cpu operations. The developer subject almost allows me to rationalize the time I’m wasting because its code related and I learn from it, but I should be doing this during long breaks or before/after work because it can take me a long time to get back to focus. Thanks for sharing this information and I look forward to attempting to implement this right away.

    - - -
    -
  46. -
  47. -
    -
    - Dan Sutton says:
    - - - -

    I think I’m both types: it depends on how hard a problem I’m trying to solve. If I’m writing a compiler, as I was last week, then there’s virtually no distraction at all; if it’s website stuff, then Facebook sees quite a bit of me. There’s a boredom quotient here, too… the harder stuff is more interesting and thus I’m going to be less apt to be sucked into doing something else on days when I really have to think. As you can probably tell, today is not one of those days…

    - - -
    -
  48. -
  49. -
    -
    - Carlos López says:
    - - - -

    How bad it is that i read this whole article on one of my compiling breaks??

    -

    Jajajaja, i’m not a Zen coders, i do in fact, do some relaxations, chat a little with co-workers, check internet stuff.

    -

    Most of the time, i’m breaking bugs of stuff i coded. Depends on what i’m doing its how i work. If its something urgent or something pretty interesting, times goes flying, if its some addition of thing already working or breaking bugs, then break present a lot!

    - - -
    -
  50. -
  51. -
    -
    - pat says:
    - - - -

    I think you’re underestimating the importance of compilation time, or how broad the spectrum of compilation times can be. Sure, there will always be cases where you need to wait on your computer, but for a programmer, if you can eliminate the compilation penalty, you can eliminate 99% of the opportunities for self-distraction.

    -

    For one project I’m working on, “A”, it takes 2 minutes to do a build, even when nothing has changed. Another project I’m working on, “B”, uses a compiler that only needs to compile the one function that changed (in memory, i.e., it doesn’t even need to load a whole text file from disk), and never takes even as much as 0.1 sec.

    -

    For project “A”, if I adopted this “zen” approach, I would spend the vast majority of my day simply staring out the window. So I have to try to multitask, on other aspects of the project, admittedly poorly. For project “B”, I simply can’t get distracted long enough to go to some social media site, even if I wanted to. I only know the compiler took a whole 0.04s because it told me.

    -

    There is a social problem here, yes, but it’s caused by a technical one. Have you ever used a service that took 2 minutes to log in? (I have! If you were on the internet back before modems even had a “K” in their speed, you probably have, too.) There’s a huge usability difference between a slow service, and something like Facebook which is essentially instant-on. One truth of technology is that a big enough quantitative difference leads to a qualitative difference.

    -

    Why is it even possible for some compilers to be so slow still? They’re not doing *that* much work. My version control software (hg inotify) knows instantly whether any files have changed, and doesn’t need to walk a bunch of folders to check timestamps to find that out. Why isn’t my compiler that smart? I’ve got gobs of extra memory and CPU to spare. It shouldn’t sit around doing nothing at all, and then spring into action when I run the “build” command and start up a bunch of new processes, and load a bunch of files, and feed them through the lexer and parser and so on. It could have been doing the first 98% of this while I was typing, and it was sitting idle.

    -

    There’s nothing special about compilation, except that we do it a lot. If your text editor if it took 2 minutes to save a file, would you say “There will always be waiting times while working on the computer” and analyze the effects of visiting Facebook, or would you find a way to switch editors? On project “B”, I can’t remember the last time I had to wait on my computer for anything.

    - - -
    -
  52. -
  53. -
    -
    - Christian says:
    - - - -

    Hi,

    -

    nice post. I wrote a similar before over a week. I called it:
    -“The 10 Rules of a Zen programmer”
    -http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html

    -

    Basically you are going into detail with my first rule of Zen Programming: focus. What I like is the idea of micro breaks. The images are great.

    -

    Anyway, I think “focus” only does not make you a Zen programmer alone. The article does not show about your relation to Zen, so I think you used this term to emphasize the “reduced” distraction noise around you.

    -

    However, a good article.

    -

    Cheers

    - - -
    -
  54. -
  55. -
    -
    - dario-g says:
    - - - -

    Great article but fast CPU, plenty of RAM and SSD will help you ;) Like helped me :)

    - - -
    -
  56. -
  57. -
    -
    - Bob says:
    - - - -

    Lucky for the author I’m a distraction junkie or I would have never read this article.

    - - -
    -
  58. -
  59. -
    -
    - Emanuel Landeholm says:
    - - - -

    +1

    -

    Back in my C programming days of computing youth I used to do a lot of juggling. Looking back, I now realize that I was really on to something back then. But in a completely oblivious way! I should probably pick up a new set of juggling balls… Then again, perhaps not. I don’t want to distract my co-workers unnecessarily.

    - - -
    -
      -
    • -
      -
      - Jiri Novotny says:
      - - - -

      Juggling is awesome! One of my friends in the office juggles too. It’s not annoying me at all.

      -

      Or, you can juggle in a different room. If you get a desk close to the door, you can leave/enter the room unnoticed.

      - - -
      -
    • -
    -
  60. -
  61. -
    -
    - Carl says:
    - - - -

    Interesting article. Since starting regular (1-2 hours daily) meditation a couple of years ago my working day has naturally, without any effort on my part, started to follow roughly the pattern suggested in this article. I’ve also stopped looking for distractions during compilations (again, it’s just happened almost on its own).

    -

    I can also confirm that the benefits to my productivity have been significant.

    -

    Cheers,
    -Carl

    - - -
    -
  62. -
  63. -
    -
    - Kemal Delalić says:
    - - - -

    Awesome post, I can’t stress enough how important it is not to lose focus

    - - -
    -
  64. -
  65. -
    -
    - minime says:
    - - - -

    What you forgot is all the external distractions, like phone calls, coworkers coming in, or system surveillance alarms…

    - - -
    -
  66. -
  67. -
    -
    - Jiri Novotny says:
    - - - -

    My latest post about Hidden Procrastination:

    -

    http://www.dextronet.com/blog/2012/02/hidden-procrastination/

    - - -
    -
  68. -
  69. -
    -
    - Umair Jabbar says:
    - - - -

    Very nicely written.

    -

    I am glad that my natural habit of stretching more than once on a day at work is not something that I should try and suppress :)

    - - -
    -
  70. -
  71. -
    - - - - -

    […] Are you a Zen coder or a distraction junkie? It’s been a while since I’ve worked on a project where “my code’s been compiling” has been a valid excuse for not working. But now that I am on such a project, it’s important that those mini-breaks don’t turn into longer breaks. […]

    - - -
    -
  72. -
  73. -
    -
    - bluszcz says:
    - - - -

    “””PS: Know anyone who is checking email 50 times a day, and has 12 different notifications jumping in his face all the time? Send him this article. He will thank you later.”””

    -

    I knew. And I sent it to this person. It was my boss. He said thank you and fired me.

    -

    ;)

    - - -
    -
  74. -
  75. -
    -
    - Amir says:
    - - - -

    “However, I almost immediately run into a big problem: When I was compiling or deploying something, I automatically opened one or more of the following: Email client, Facebook, news reader, news sites. That’s a bad habit. It’s hard to break. It ruins my goal of clean focus.”
    -This is how I got to your article!!! Some nice things grow from bad habits

    - - -
    -
  76. -
  77. -
    -
    - Himanshu Mishra says:
    - - - -

    Great article ! …. thanks :)

    - - -
    -
  78. -
  79. -
    -
    - Foobar says:
    - - - -

    and average managers always value distraction junkie coder higher than zen coder, because first one multitasks and is more social [and is always first to blame others]

    - - -
    -
  80. -
  81. -
    - - - - -

    […] of a syllabus and the curriculum. I started working on them after the lecture. I had fun coding in zen mode for some time, going through the course material on my own pace and doing the quizzes and […]

    - - -
    -
  82. -
- - - - - -
- -

Leave a Reply to Coding Dojo Day 1 | Invoke Interests

- - - - -
- - -

-

- -

-

- -

-

- - - - -

- -

- - -

-

- - -
- - - -
- - - -
-
- - - - - -
- - - - - - \ No newline at end of file diff --git "a/public/download/\\\".html" "b/public/download/\\\".html" deleted file mode 100644 index d659db7..0000000 --- "a/public/download/\\\".html" +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - - - - - - - - - - - - - -Better ListView for .NET (C#, VB) - Alternative list view component - - - - - - - - - -
- - - - - -
-
-
-

Better ListView: Alternative list view control for .NET

- - - -
- -
- - - - - - - - - - - - - - - -
- -
- - -
-

Seamless integration with .NET 2.0 and higher

- -
- - - - -
-

Better ListView

-
- - -
-

Thumbnails

-
- - -
-

Multi-line Items

-
- - -
-

Item Hierarchy

-
- - - - - - - - - - - -
- -
- - - -
- - -
-
- - - - - -
- - - - - diff --git a/public/articles/visual-studio-toolbox-control-integration.html b/src/data/articles/visual-studio-toolbox-control-integration.html similarity index 100% rename from public/articles/visual-studio-toolbox-control-integration.html rename to src/data/articles/visual-studio-toolbox-control-integration.html diff --git a/public/better-listview-express/comparison-with-full-version.html b/src/data/better-listview-express/comparison-with-full-version.html similarity index 100% rename from public/better-listview-express/comparison-with-full-version.html rename to src/data/better-listview-express/comparison-with-full-version.html diff --git a/public/better-listview-express/documentation.html b/src/data/better-listview-express/documentation.html similarity index 100% rename from public/better-listview-express/documentation.html rename to src/data/better-listview-express/documentation.html diff --git a/public/better-listview-express/quick-start-guide.html b/src/data/better-listview-express/quick-start-guide.html similarity index 100% rename from public/better-listview-express/quick-start-guide.html rename to src/data/better-listview-express/quick-start-guide.html diff --git a/public/better-listview/class-reference.html b/src/data/better-listview/class-reference.html similarity index 100% rename from public/better-listview/class-reference.html rename to src/data/better-listview/class-reference.html diff --git a/public/better-listview/documentation.html b/src/data/better-listview/documentation.html similarity index 100% rename from public/better-listview/documentation.html rename to src/data/better-listview/documentation.html diff --git a/public/better-listview/quick-start-guide.html b/src/data/better-listview/quick-start-guide.html similarity index 100% rename from public/better-listview/quick-start-guide.html rename to src/data/better-listview/quick-start-guide.html diff --git a/public/better-splitbutton/class-reference.html b/src/data/better-splitbutton/class-reference.html similarity index 100% rename from public/better-splitbutton/class-reference.html rename to src/data/better-splitbutton/class-reference.html diff --git a/public/better-splitbutton/documentation.html b/src/data/better-splitbutton/documentation.html similarity index 100% rename from public/better-splitbutton/documentation.html rename to src/data/better-splitbutton/documentation.html diff --git a/public/better-splitbutton/quick-start-guide.html b/src/data/better-splitbutton/quick-start-guide.html similarity index 100% rename from public/better-splitbutton/quick-start-guide.html rename to src/data/better-splitbutton/quick-start-guide.html diff --git a/public/better-thumbnail-browser/class-reference.html b/src/data/better-thumbnail-browser/class-reference.html similarity index 100% rename from public/better-thumbnail-browser/class-reference.html rename to src/data/better-thumbnail-browser/class-reference.html diff --git a/public/better-thumbnail-browser/documentation.html b/src/data/better-thumbnail-browser/documentation.html similarity index 100% rename from public/better-thumbnail-browser/documentation.html rename to src/data/better-thumbnail-browser/documentation.html diff --git a/public/better-thumbnail-browser/quick-start-guide.html b/src/data/better-thumbnail-browser/quick-start-guide.html similarity index 100% rename from public/better-thumbnail-browser/quick-start-guide.html rename to src/data/better-thumbnail-browser/quick-start-guide.html diff --git a/public/blog/2011/01/index.html b/src/data/blog/2011/01/index.html similarity index 100% rename from public/blog/2011/01/index.html rename to src/data/blog/2011/01/index.html diff --git a/public/blog/2011/02/displaying-thumbnails-withs-borders-and-shadows/index.html b/src/data/blog/2011/02/displaying-thumbnails-withs-borders-and-shadows/index.html similarity index 100% rename from public/blog/2011/02/displaying-thumbnails-withs-borders-and-shadows/index.html rename to src/data/blog/2011/02/displaying-thumbnails-withs-borders-and-shadows/index.html diff --git a/public/blog/2011/02/index.html b/src/data/blog/2011/02/index.html similarity index 100% rename from public/blog/2011/02/index.html rename to src/data/blog/2011/02/index.html diff --git a/public/blog/2011/02/page/2/index.html b/src/data/blog/2011/02/page/2/index.html similarity index 100% rename from public/blog/2011/02/page/2/index.html rename to src/data/blog/2011/02/page/2/index.html diff --git a/public/blog/2011/02/what-we-are-working-on-groups-item-hierarchy-support/index.html b/src/data/blog/2011/02/what-we-are-working-on-groups-item-hierarchy-support/index.html similarity index 100% rename from public/blog/2011/02/what-we-are-working-on-groups-item-hierarchy-support/index.html rename to src/data/blog/2011/02/what-we-are-working-on-groups-item-hierarchy-support/index.html diff --git a/public/blog/2011/03/index.html b/src/data/blog/2011/03/index.html similarity index 100% rename from public/blog/2011/03/index.html rename to src/data/blog/2011/03/index.html diff --git a/public/blog/2011/03/page/2/index.html b/src/data/blog/2011/03/page/2/index.html similarity index 100% rename from public/blog/2011/03/page/2/index.html rename to src/data/blog/2011/03/page/2/index.html diff --git a/public/blog/2011/05/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/index.html b/src/data/blog/2011/05/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/index.html similarity index 100% rename from public/blog/2011/05/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/index.html rename to src/data/blog/2011/05/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/index.html diff --git a/public/blog/2011/05/index.html b/src/data/blog/2011/05/index.html similarity index 100% rename from public/blog/2011/05/index.html rename to src/data/blog/2011/05/index.html diff --git a/public/blog/2011/06/index.html b/src/data/blog/2011/06/index.html similarity index 100% rename from public/blog/2011/06/index.html rename to src/data/blog/2011/06/index.html diff --git a/public/blog/2011/07/index.html b/src/data/blog/2011/07/index.html similarity index 100% rename from public/blog/2011/07/index.html rename to src/data/blog/2011/07/index.html diff --git a/public/blog/2011/07/windows-theme-support-in-better-listview/index.html b/src/data/blog/2011/07/windows-theme-support-in-better-listview/index.html similarity index 100% rename from public/blog/2011/07/windows-theme-support-in-better-listview/index.html rename to src/data/blog/2011/07/windows-theme-support-in-better-listview/index.html diff --git a/public/blog/2011/08/index.html b/src/data/blog/2011/08/index.html similarity index 100% rename from public/blog/2011/08/index.html rename to src/data/blog/2011/08/index.html diff --git a/public/blog/2011/09/index.html b/src/data/blog/2011/09/index.html similarity index 100% rename from public/blog/2011/09/index.html rename to src/data/blog/2011/09/index.html diff --git a/public/blog/2011/10/index.html b/src/data/blog/2011/10/index.html similarity index 100% rename from public/blog/2011/10/index.html rename to src/data/blog/2011/10/index.html diff --git a/public/blog/2011/11/index.html b/src/data/blog/2011/11/index.html similarity index 100% rename from public/blog/2011/11/index.html rename to src/data/blog/2011/11/index.html diff --git a/public/blog/2011/11/page/2/index.html b/src/data/blog/2011/11/page/2/index.html similarity index 100% rename from public/blog/2011/11/page/2/index.html rename to src/data/blog/2011/11/page/2/index.html diff --git a/public/blog/2011/11/vertical-alignment-and-text-wrapping-in-better-listview/index.html b/src/data/blog/2011/11/vertical-alignment-and-text-wrapping-in-better-listview/index.html similarity index 100% rename from public/blog/2011/11/vertical-alignment-and-text-wrapping-in-better-listview/index.html rename to src/data/blog/2011/11/vertical-alignment-and-text-wrapping-in-better-listview/index.html diff --git a/public/blog/2011/12/how-to-dynamically-resize-focused-item/index.html b/src/data/blog/2011/12/how-to-dynamically-resize-focused-item/index.html similarity index 100% rename from public/blog/2011/12/how-to-dynamically-resize-focused-item/index.html rename to src/data/blog/2011/12/how-to-dynamically-resize-focused-item/index.html diff --git a/public/blog/2011/12/index.html b/src/data/blog/2011/12/index.html similarity index 100% rename from public/blog/2011/12/index.html rename to src/data/blog/2011/12/index.html diff --git a/public/blog/2012/01/index.html b/src/data/blog/2012/01/index.html similarity index 100% rename from public/blog/2012/01/index.html rename to src/data/blog/2012/01/index.html diff --git a/public/blog/2012/01/page/2/index.html b/src/data/blog/2012/01/page/2/index.html similarity index 100% rename from public/blog/2012/01/page/2/index.html rename to src/data/blog/2012/01/page/2/index.html diff --git a/public/blog/2012/01/read-only-mode-in-better-listview/index.html b/src/data/blog/2012/01/read-only-mode-in-better-listview/index.html similarity index 100% rename from public/blog/2012/01/read-only-mode-in-better-listview/index.html rename to src/data/blog/2012/01/read-only-mode-in-better-listview/index.html diff --git a/public/blog/2012/02/index.html b/src/data/blog/2012/02/index.html similarity index 100% rename from public/blog/2012/02/index.html rename to src/data/blog/2012/02/index.html diff --git a/public/blog/2012/03/index.html b/src/data/blog/2012/03/index.html similarity index 100% rename from public/blog/2012/03/index.html rename to src/data/blog/2012/03/index.html diff --git a/public/blog/2012/04/index.html b/src/data/blog/2012/04/index.html similarity index 100% rename from public/blog/2012/04/index.html rename to src/data/blog/2012/04/index.html diff --git a/public/blog/2012/08/index.html b/src/data/blog/2012/08/index.html similarity index 100% rename from public/blog/2012/08/index.html rename to src/data/blog/2012/08/index.html diff --git a/public/blog/2012/09/index.html b/src/data/blog/2012/09/index.html similarity index 100% rename from public/blog/2012/09/index.html rename to src/data/blog/2012/09/index.html diff --git a/public/blog/2012/12/index.html b/src/data/blog/2012/12/index.html similarity index 100% rename from public/blog/2012/12/index.html rename to src/data/blog/2012/12/index.html diff --git a/public/blog/2013/01/index.html b/src/data/blog/2013/01/index.html similarity index 100% rename from public/blog/2013/01/index.html rename to src/data/blog/2013/01/index.html diff --git a/public/blog/2013/02/index.html b/src/data/blog/2013/02/index.html similarity index 100% rename from public/blog/2013/02/index.html rename to src/data/blog/2013/02/index.html diff --git a/public/blog/2013/03/index.html b/src/data/blog/2013/03/index.html similarity index 100% rename from public/blog/2013/03/index.html rename to src/data/blog/2013/03/index.html diff --git a/public/blog/2014/02/index.html b/src/data/blog/2014/02/index.html similarity index 100% rename from public/blog/2014/02/index.html rename to src/data/blog/2014/02/index.html diff --git a/public/blog/2014/04/index.html b/src/data/blog/2014/04/index.html similarity index 100% rename from public/blog/2014/04/index.html rename to src/data/blog/2014/04/index.html diff --git a/public/blog/2014/07/index.html b/src/data/blog/2014/07/index.html similarity index 100% rename from public/blog/2014/07/index.html rename to src/data/blog/2014/07/index.html diff --git a/public/blog/2014/08/index.html b/src/data/blog/2014/08/index.html similarity index 100% rename from public/blog/2014/08/index.html rename to src/data/blog/2014/08/index.html diff --git a/public/blog/2016/11/index.html b/src/data/blog/2016/11/index.html similarity index 100% rename from public/blog/2016/11/index.html rename to src/data/blog/2016/11/index.html diff --git a/public/blog/2017/02/index.html b/src/data/blog/2017/02/index.html similarity index 100% rename from public/blog/2017/02/index.html rename to src/data/blog/2017/02/index.html diff --git a/public/blog/2017/03/index.html b/src/data/blog/2017/03/index.html similarity index 100% rename from public/blog/2017/03/index.html rename to src/data/blog/2017/03/index.html diff --git a/public/blog/activation-issues-and-how-to-solve-them/feed/index.html b/src/data/blog/activation-issues-and-how-to-solve-them/feed/index.html similarity index 100% rename from public/blog/activation-issues-and-how-to-solve-them/feed/index.html rename to src/data/blog/activation-issues-and-how-to-solve-them/feed/index.html diff --git a/public/blog/alternating-rows-in-better-listview/feed/index.html b/src/data/blog/alternating-rows-in-better-listview/feed/index.html similarity index 100% rename from public/blog/alternating-rows-in-better-listview/feed/index.html rename to src/data/blog/alternating-rows-in-better-listview/feed/index.html diff --git a/public/blog/better-listview-1-50-released/feed/index.html b/src/data/blog/better-listview-1-50-released/feed/index.html similarity index 100% rename from public/blog/better-listview-1-50-released/feed/index.html rename to src/data/blog/better-listview-1-50-released/feed/index.html diff --git a/public/blog/better-listview-1-52-released/feed/index.html b/src/data/blog/better-listview-1-52-released/feed/index.html similarity index 100% rename from public/blog/better-listview-1-52-released/feed/index.html rename to src/data/blog/better-listview-1-52-released/feed/index.html diff --git a/public/blog/better-listview-2-0-samples-preview/feed/index.html b/src/data/blog/better-listview-2-0-samples-preview/feed/index.html similarity index 100% rename from public/blog/better-listview-2-0-samples-preview/feed/index.html rename to src/data/blog/better-listview-2-0-samples-preview/feed/index.html diff --git a/public/blog/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/feed/index.html b/src/data/blog/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/feed/index.html similarity index 100% rename from public/blog/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/feed/index.html rename to src/data/blog/better-listview-2-0-sneak-peek-item-hierarchy-groups-more/feed/index.html diff --git a/public/blog/better-listview-2-00-released/feed/index.html b/src/data/blog/better-listview-2-00-released/feed/index.html similarity index 100% rename from public/blog/better-listview-2-00-released/feed/index.html rename to src/data/blog/better-listview-2-00-released/feed/index.html diff --git a/public/blog/better-listview-2-1-optimizations-done-minor-features-and-testing/feed/index.html b/src/data/blog/better-listview-2-1-optimizations-done-minor-features-and-testing/feed/index.html similarity index 100% rename from public/blog/better-listview-2-1-optimizations-done-minor-features-and-testing/feed/index.html rename to src/data/blog/better-listview-2-1-optimizations-done-minor-features-and-testing/feed/index.html diff --git a/public/blog/better-listview-2-10-released/feed/index.html b/src/data/blog/better-listview-2-10-released/feed/index.html similarity index 100% rename from public/blog/better-listview-2-10-released/feed/index.html rename to src/data/blog/better-listview-2-10-released/feed/index.html diff --git a/public/blog/better-listview-released/feed/index.html b/src/data/blog/better-listview-released/feed/index.html similarity index 100% rename from public/blog/better-listview-released/feed/index.html rename to src/data/blog/better-listview-released/feed/index.html diff --git a/public/blog/better-listview-reviewed-at-devproconnections-com/feed/index.html b/src/data/blog/better-listview-reviewed-at-devproconnections-com/feed/index.html similarity index 100% rename from public/blog/better-listview-reviewed-at-devproconnections-com/feed/index.html rename to src/data/blog/better-listview-reviewed-at-devproconnections-com/feed/index.html diff --git a/public/blog/better-listview-tip-how-to-draw-custom-selection/feed/index.html b/src/data/blog/better-listview-tip-how-to-draw-custom-selection/feed/index.html similarity index 100% rename from public/blog/better-listview-tip-how-to-draw-custom-selection/feed/index.html rename to src/data/blog/better-listview-tip-how-to-draw-custom-selection/feed/index.html diff --git a/public/blog/better-thumbnail-browser-component-released/feed/index.html b/src/data/blog/better-thumbnail-browser-component-released/feed/index.html similarity index 100% rename from public/blog/better-thumbnail-browser-component-released/feed/index.html rename to src/data/blog/better-thumbnail-browser-component-released/feed/index.html diff --git a/public/blog/binding-images-in-better-listview/feed/index.html b/src/data/blog/binding-images-in-better-listview/feed/index.html similarity index 100% rename from public/blog/binding-images-in-better-listview/feed/index.html rename to src/data/blog/binding-images-in-better-listview/feed/index.html diff --git a/public/blog/blv-and-internet-explorer/feed/index.html b/src/data/blog/blv-and-internet-explorer/feed/index.html similarity index 100% rename from public/blog/blv-and-internet-explorer/feed/index.html rename to src/data/blog/blv-and-internet-explorer/feed/index.html diff --git a/public/blog/category/announcements/feed/index.html b/src/data/blog/category/announcements/feed/index.html similarity index 100% rename from public/blog/category/announcements/feed/index.html rename to src/data/blog/category/announcements/feed/index.html diff --git a/public/blog/category/announcements/index.html b/src/data/blog/category/announcements/index.html similarity index 100% rename from public/blog/category/announcements/index.html rename to src/data/blog/category/announcements/index.html diff --git a/public/blog/category/better-listview/feed/index.html b/src/data/blog/category/better-listview/feed/index.html similarity index 100% rename from public/blog/category/better-listview/feed/index.html rename to src/data/blog/category/better-listview/feed/index.html diff --git a/public/blog/category/better-listview/index.html b/src/data/blog/category/better-listview/index.html similarity index 100% rename from public/blog/category/better-listview/index.html rename to src/data/blog/category/better-listview/index.html diff --git a/public/blog/category/components/feed/index.html b/src/data/blog/category/components/feed/index.html similarity index 100% rename from public/blog/category/components/feed/index.html rename to src/data/blog/category/components/feed/index.html diff --git a/public/blog/category/components/index.html b/src/data/blog/category/components/index.html similarity index 100% rename from public/blog/category/components/index.html rename to src/data/blog/category/components/index.html diff --git a/public/blog/category/programming/feed/index.html b/src/data/blog/category/programming/feed/index.html similarity index 100% rename from public/blog/category/programming/feed/index.html rename to src/data/blog/category/programming/feed/index.html diff --git a/public/blog/category/programming/index.html b/src/data/blog/category/programming/index.html similarity index 100% rename from public/blog/category/programming/index.html rename to src/data/blog/category/programming/index.html diff --git a/public/blog/category/tutorials/feed/index.html b/src/data/blog/category/tutorials/feed/index.html similarity index 100% rename from public/blog/category/tutorials/feed/index.html rename to src/data/blog/category/tutorials/feed/index.html diff --git a/public/blog/category/tutorials/index.html b/src/data/blog/category/tutorials/index.html similarity index 100% rename from public/blog/category/tutorials/index.html rename to src/data/blog/category/tutorials/index.html diff --git a/public/blog/centering-images-in-better-listview-sub-items/feed/index.html b/src/data/blog/centering-images-in-better-listview-sub-items/feed/index.html similarity index 100% rename from public/blog/centering-images-in-better-listview-sub-items/feed/index.html rename to src/data/blog/centering-images-in-better-listview-sub-items/feed/index.html diff --git a/public/blog/combined-items-in-better-listview/feed/index.html b/src/data/blog/combined-items-in-better-listview/feed/index.html similarity index 100% rename from public/blog/combined-items-in-better-listview/feed/index.html rename to src/data/blog/combined-items-in-better-listview/feed/index.html diff --git a/public/blog/coming-soon-better-listview-2-1-optimized-for-performance/feed/index.html b/src/data/blog/coming-soon-better-listview-2-1-optimized-for-performance/feed/index.html similarity index 100% rename from public/blog/coming-soon-better-listview-2-1-optimized-for-performance/feed/index.html rename to src/data/blog/coming-soon-better-listview-2-1-optimized-for-performance/feed/index.html diff --git a/public/blog/comments/feed/index.html b/src/data/blog/comments/feed/index.html similarity index 100% rename from public/blog/comments/feed/index.html rename to src/data/blog/comments/feed/index.html diff --git a/public/blog/custom-behavior-of-group-headers-in-better-listview/feed/index.html b/src/data/blog/custom-behavior-of-group-headers-in-better-listview/feed/index.html similarity index 100% rename from public/blog/custom-behavior-of-group-headers-in-better-listview/feed/index.html rename to src/data/blog/custom-behavior-of-group-headers-in-better-listview/feed/index.html diff --git a/public/blog/custom-item-height-in-details-view-of-better-listview/feed/index.html b/src/data/blog/custom-item-height-in-details-view-of-better-listview/feed/index.html similarity index 100% rename from public/blog/custom-item-height-in-details-view-of-better-listview/feed/index.html rename to src/data/blog/custom-item-height-in-details-view-of-better-listview/feed/index.html diff --git a/public/blog/custom-label-edit-how-to-rename-file-names-without-extension-in-better-listview/feed/index.html b/src/data/blog/custom-label-edit-how-to-rename-file-names-without-extension-in-better-listview/feed/index.html similarity index 100% rename from public/blog/custom-label-edit-how-to-rename-file-names-without-extension-in-better-listview/feed/index.html rename to src/data/blog/custom-label-edit-how-to-rename-file-names-without-extension-in-better-listview/feed/index.html diff --git a/public/blog/custom-scroll-bar-size-in-better-listview/feed/index.html b/src/data/blog/custom-scroll-bar-size-in-better-listview/feed/index.html similarity index 100% rename from public/blog/custom-scroll-bar-size-in-better-listview/feed/index.html rename to src/data/blog/custom-scroll-bar-size-in-better-listview/feed/index.html diff --git a/public/blog/custom-spacing-between-items-in-details-view/feed/index.html b/src/data/blog/custom-spacing-between-items-in-details-view/feed/index.html similarity index 100% rename from public/blog/custom-spacing-between-items-in-details-view/feed/index.html rename to src/data/blog/custom-spacing-between-items-in-details-view/feed/index.html diff --git a/public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/feed/index.html b/src/data/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/feed/index.html similarity index 100% rename from public/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/feed/index.html rename to src/data/blog/customize-label-editing-embedded-control-for-each-line-in-better-listview/feed/index.html diff --git a/public/blog/displaying-thumbnails-withs-borders-and-shadows/feed/index.html b/src/data/blog/displaying-thumbnails-withs-borders-and-shadows/feed/index.html similarity index 100% rename from public/blog/displaying-thumbnails-withs-borders-and-shadows/feed/index.html rename to src/data/blog/displaying-thumbnails-withs-borders-and-shadows/feed/index.html diff --git a/public/blog/displayingmultiline-items-in-listview/feed/index.html b/src/data/blog/displayingmultiline-items-in-listview/feed/index.html similarity index 100% rename from public/blog/displayingmultiline-items-in-listview/feed/index.html rename to src/data/blog/displayingmultiline-items-in-listview/feed/index.html diff --git a/public/blog/enabling-search-highlight-in-better-listview/feed/index.html b/src/data/blog/enabling-search-highlight-in-better-listview/feed/index.html similarity index 100% rename from public/blog/enabling-search-highlight-in-better-listview/feed/index.html rename to src/data/blog/enabling-search-highlight-in-better-listview/feed/index.html diff --git a/public/blog/feed/index.html b/src/data/blog/feed/index.html similarity index 100% rename from public/blog/feed/index.html rename to src/data/blog/feed/index.html diff --git a/public/blog/file-explorer-with-better-listview/feed/index.html b/src/data/blog/file-explorer-with-better-listview/feed/index.html similarity index 100% rename from public/blog/file-explorer-with-better-listview/feed/index.html rename to src/data/blog/file-explorer-with-better-listview/feed/index.html diff --git a/public/blog/hiding-column-headers-in-better-listview/feed/index.html b/src/data/blog/hiding-column-headers-in-better-listview/feed/index.html similarity index 100% rename from public/blog/hiding-column-headers-in-better-listview/feed/index.html rename to src/data/blog/hiding-column-headers-in-better-listview/feed/index.html diff --git a/public/blog/hiding-items-in-better-listview/feed/index.html b/src/data/blog/hiding-items-in-better-listview/feed/index.html similarity index 100% rename from public/blog/hiding-items-in-better-listview/feed/index.html rename to src/data/blog/hiding-items-in-better-listview/feed/index.html diff --git a/public/blog/hot-tracking-items-in-better-listview/feed/index.html b/src/data/blog/hot-tracking-items-in-better-listview/feed/index.html similarity index 100% rename from public/blog/hot-tracking-items-in-better-listview/feed/index.html rename to src/data/blog/hot-tracking-items-in-better-listview/feed/index.html diff --git a/public/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/feed/index.html b/src/data/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/feed/index.html similarity index 100% rename from public/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/feed/index.html rename to src/data/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/feed/index.html diff --git a/public/blog/how-to-change-list-view-mouse-wheel-scroll-speed/feed/index.html b/src/data/blog/how-to-change-list-view-mouse-wheel-scroll-speed/feed/index.html similarity index 100% rename from public/blog/how-to-change-list-view-mouse-wheel-scroll-speed/feed/index.html rename to src/data/blog/how-to-change-list-view-mouse-wheel-scroll-speed/feed/index.html diff --git a/public/blog/how-to-display-items-in-custom-states/feed/index.html b/src/data/blog/how-to-display-items-in-custom-states/feed/index.html similarity index 100% rename from public/blog/how-to-display-items-in-custom-states/feed/index.html rename to src/data/blog/how-to-display-items-in-custom-states/feed/index.html diff --git a/public/blog/how-to-dynamically-resize-focused-item/feed/index.html b/src/data/blog/how-to-dynamically-resize-focused-item/feed/index.html similarity index 100% rename from public/blog/how-to-dynamically-resize-focused-item/feed/index.html rename to src/data/blog/how-to-dynamically-resize-focused-item/feed/index.html diff --git a/public/blog/how-to-hide-a-column-in-better-listview/feed/index.html b/src/data/blog/how-to-hide-a-column-in-better-listview/feed/index.html similarity index 100% rename from public/blog/how-to-hide-a-column-in-better-listview/feed/index.html rename to src/data/blog/how-to-hide-a-column-in-better-listview/feed/index.html diff --git a/public/blog/how-to-make-items-fading-on-edges-in-better-listview/feed/index.html b/src/data/blog/how-to-make-items-fading-on-edges-in-better-listview/feed/index.html similarity index 100% rename from public/blog/how-to-make-items-fading-on-edges-in-better-listview/feed/index.html rename to src/data/blog/how-to-make-items-fading-on-edges-in-better-listview/feed/index.html diff --git a/public/blog/how-to-store-better-listview-content-in-a-string-user-request/feed/index.html b/src/data/blog/how-to-store-better-listview-content-in-a-string-user-request/feed/index.html similarity index 100% rename from public/blog/how-to-store-better-listview-content-in-a-string-user-request/feed/index.html rename to src/data/blog/how-to-store-better-listview-content-in-a-string-user-request/feed/index.html diff --git a/public/blog/list-view-drag-and-drop-item-reorder-sort/feed/index.html b/src/data/blog/list-view-drag-and-drop-item-reorder-sort/feed/index.html similarity index 100% rename from public/blog/list-view-drag-and-drop-item-reorder-sort/feed/index.html rename to src/data/blog/list-view-drag-and-drop-item-reorder-sort/feed/index.html diff --git a/public/blog/non-selectable-items-in-better-listview/feed/index.html b/src/data/blog/non-selectable-items-in-better-listview/feed/index.html similarity index 100% rename from public/blog/non-selectable-items-in-better-listview/feed/index.html rename to src/data/blog/non-selectable-items-in-better-listview/feed/index.html diff --git a/public/blog/page/3/index.html b/src/data/blog/page/3/index.html similarity index 100% rename from public/blog/page/3/index.html rename to src/data/blog/page/3/index.html diff --git a/public/blog/page/4/index.html b/src/data/blog/page/4/index.html similarity index 100% rename from public/blog/page/4/index.html rename to src/data/blog/page/4/index.html diff --git a/public/blog/page/5/index.html b/src/data/blog/page/5/index.html similarity index 100% rename from public/blog/page/5/index.html rename to src/data/blog/page/5/index.html diff --git a/public/blog/page/6/index.html b/src/data/blog/page/6/index.html similarity index 100% rename from public/blog/page/6/index.html rename to src/data/blog/page/6/index.html diff --git a/public/blog/read-only-mode-in-better-listview/feed/index.html b/src/data/blog/read-only-mode-in-better-listview/feed/index.html similarity index 100% rename from public/blog/read-only-mode-in-better-listview/feed/index.html rename to src/data/blog/read-only-mode-in-better-listview/feed/index.html diff --git a/public/blog/right-aligned-images-in-better-listview/feed/index.html b/src/data/blog/right-aligned-images-in-better-listview/feed/index.html similarity index 100% rename from public/blog/right-aligned-images-in-better-listview/feed/index.html rename to src/data/blog/right-aligned-images-in-better-listview/feed/index.html diff --git a/public/blog/search-filtering-in-better-listview/feed/index.html b/src/data/blog/search-filtering-in-better-listview/feed/index.html similarity index 100% rename from public/blog/search-filtering-in-better-listview/feed/index.html rename to src/data/blog/search-filtering-in-better-listview/feed/index.html diff --git a/public/blog/sub-item-check-boxes-in-better-listview/feed/index.html b/src/data/blog/sub-item-check-boxes-in-better-listview/feed/index.html similarity index 100% rename from public/blog/sub-item-check-boxes-in-better-listview/feed/index.html rename to src/data/blog/sub-item-check-boxes-in-better-listview/feed/index.html diff --git a/public/blog/synergy-of-better-listview-and-our-applications/feed/index.html b/src/data/blog/synergy-of-better-listview-and-our-applications/feed/index.html similarity index 100% rename from public/blog/synergy-of-better-listview-and-our-applications/feed/index.html rename to src/data/blog/synergy-of-better-listview-and-our-applications/feed/index.html diff --git a/public/blog/tag/1-52/feed/index.html b/src/data/blog/tag/1-52/feed/index.html similarity index 100% rename from public/blog/tag/1-52/feed/index.html rename to src/data/blog/tag/1-52/feed/index.html diff --git a/public/blog/tag/1-52/index.html b/src/data/blog/tag/1-52/index.html similarity index 100% rename from public/blog/tag/1-52/index.html rename to src/data/blog/tag/1-52/index.html diff --git a/public/blog/tag/2-00/feed/index.html b/src/data/blog/tag/2-00/feed/index.html similarity index 100% rename from public/blog/tag/2-00/feed/index.html rename to src/data/blog/tag/2-00/feed/index.html diff --git a/public/blog/tag/2-00/index.html b/src/data/blog/tag/2-00/index.html similarity index 100% rename from public/blog/tag/2-00/index.html rename to src/data/blog/tag/2-00/index.html diff --git a/public/blog/tag/2-01/feed/index.html b/src/data/blog/tag/2-01/feed/index.html similarity index 100% rename from public/blog/tag/2-01/feed/index.html rename to src/data/blog/tag/2-01/feed/index.html diff --git a/public/blog/tag/2-01/index.html b/src/data/blog/tag/2-01/index.html similarity index 100% rename from public/blog/tag/2-01/index.html rename to src/data/blog/tag/2-01/index.html diff --git a/public/blog/tag/aero/feed/index.html b/src/data/blog/tag/aero/feed/index.html similarity index 100% rename from public/blog/tag/aero/feed/index.html rename to src/data/blog/tag/aero/feed/index.html diff --git a/public/blog/tag/aero/index.html b/src/data/blog/tag/aero/index.html similarity index 100% rename from public/blog/tag/aero/index.html rename to src/data/blog/tag/aero/index.html diff --git a/public/blog/tag/align/feed/index.html b/src/data/blog/tag/align/feed/index.html similarity index 100% rename from public/blog/tag/align/feed/index.html rename to src/data/blog/tag/align/feed/index.html diff --git a/public/blog/tag/align/index.html b/src/data/blog/tag/align/index.html similarity index 100% rename from public/blog/tag/align/index.html rename to src/data/blog/tag/align/index.html diff --git a/public/blog/tag/aligned/feed/index.html b/src/data/blog/tag/aligned/feed/index.html similarity index 100% rename from public/blog/tag/aligned/feed/index.html rename to src/data/blog/tag/aligned/feed/index.html diff --git a/public/blog/tag/aligned/index.html b/src/data/blog/tag/aligned/index.html similarity index 100% rename from public/blog/tag/aligned/index.html rename to src/data/blog/tag/aligned/index.html diff --git a/public/blog/tag/alignment/feed/index.html b/src/data/blog/tag/alignment/feed/index.html similarity index 100% rename from public/blog/tag/alignment/feed/index.html rename to src/data/blog/tag/alignment/feed/index.html diff --git a/public/blog/tag/alignment/index.html b/src/data/blog/tag/alignment/index.html similarity index 100% rename from public/blog/tag/alignment/index.html rename to src/data/blog/tag/alignment/index.html diff --git a/public/blog/tag/alternating/feed/index.html b/src/data/blog/tag/alternating/feed/index.html similarity index 100% rename from public/blog/tag/alternating/feed/index.html rename to src/data/blog/tag/alternating/feed/index.html diff --git a/public/blog/tag/alternating/index.html b/src/data/blog/tag/alternating/index.html similarity index 100% rename from public/blog/tag/alternating/index.html rename to src/data/blog/tag/alternating/index.html diff --git a/public/blog/tag/backcolor/feed/index.html b/src/data/blog/tag/backcolor/feed/index.html similarity index 100% rename from public/blog/tag/backcolor/feed/index.html rename to src/data/blog/tag/backcolor/feed/index.html diff --git a/public/blog/tag/backcolor/index.html b/src/data/blog/tag/backcolor/index.html similarity index 100% rename from public/blog/tag/backcolor/index.html rename to src/data/blog/tag/backcolor/index.html diff --git a/public/blog/tag/background/feed/index.html b/src/data/blog/tag/background/feed/index.html similarity index 100% rename from public/blog/tag/background/feed/index.html rename to src/data/blog/tag/background/feed/index.html diff --git a/public/blog/tag/background/index.html b/src/data/blog/tag/background/index.html similarity index 100% rename from public/blog/tag/background/index.html rename to src/data/blog/tag/background/index.html diff --git a/public/blog/tag/bars/feed/index.html b/src/data/blog/tag/bars/feed/index.html similarity index 100% rename from public/blog/tag/bars/feed/index.html rename to src/data/blog/tag/bars/feed/index.html diff --git a/public/blog/tag/bars/index.html b/src/data/blog/tag/bars/index.html similarity index 100% rename from public/blog/tag/bars/index.html rename to src/data/blog/tag/bars/index.html diff --git a/public/blog/tag/behavior/feed/index.html b/src/data/blog/tag/behavior/feed/index.html similarity index 100% rename from public/blog/tag/behavior/feed/index.html rename to src/data/blog/tag/behavior/feed/index.html diff --git a/public/blog/tag/behavior/index.html b/src/data/blog/tag/behavior/index.html similarity index 100% rename from public/blog/tag/behavior/index.html rename to src/data/blog/tag/behavior/index.html diff --git a/public/blog/tag/below/feed/index.html b/src/data/blog/tag/below/feed/index.html similarity index 100% rename from public/blog/tag/below/feed/index.html rename to src/data/blog/tag/below/feed/index.html diff --git a/public/blog/tag/below/index.html b/src/data/blog/tag/below/index.html similarity index 100% rename from public/blog/tag/below/index.html rename to src/data/blog/tag/below/index.html diff --git a/public/blog/tag/better-listview-2/feed/index.html b/src/data/blog/tag/better-listview-2/feed/index.html similarity index 100% rename from public/blog/tag/better-listview-2/feed/index.html rename to src/data/blog/tag/better-listview-2/feed/index.html diff --git a/public/blog/tag/better-listview-2/index.html b/src/data/blog/tag/better-listview-2/index.html similarity index 100% rename from public/blog/tag/better-listview-2/index.html rename to src/data/blog/tag/better-listview-2/index.html diff --git a/public/blog/tag/better/feed/index.html b/src/data/blog/tag/better/feed/index.html similarity index 100% rename from public/blog/tag/better/feed/index.html rename to src/data/blog/tag/better/feed/index.html diff --git a/public/blog/tag/better/index.html b/src/data/blog/tag/better/index.html similarity index 100% rename from public/blog/tag/better/index.html rename to src/data/blog/tag/better/index.html diff --git a/public/blog/tag/between/feed/index.html b/src/data/blog/tag/between/feed/index.html similarity index 100% rename from public/blog/tag/between/feed/index.html rename to src/data/blog/tag/between/feed/index.html diff --git a/public/blog/tag/between/index.html b/src/data/blog/tag/between/index.html similarity index 100% rename from public/blog/tag/between/index.html rename to src/data/blog/tag/between/index.html diff --git a/public/blog/tag/bind/feed/index.html b/src/data/blog/tag/bind/feed/index.html similarity index 100% rename from public/blog/tag/bind/feed/index.html rename to src/data/blog/tag/bind/feed/index.html diff --git a/public/blog/tag/bind/index.html b/src/data/blog/tag/bind/index.html similarity index 100% rename from public/blog/tag/bind/index.html rename to src/data/blog/tag/bind/index.html diff --git a/public/blog/tag/binding/feed/index.html b/src/data/blog/tag/binding/feed/index.html similarity index 100% rename from public/blog/tag/binding/feed/index.html rename to src/data/blog/tag/binding/feed/index.html diff --git a/public/blog/tag/binding/index.html b/src/data/blog/tag/binding/index.html similarity index 100% rename from public/blog/tag/binding/index.html rename to src/data/blog/tag/binding/index.html diff --git a/public/blog/tag/borders/feed/index.html b/src/data/blog/tag/borders/feed/index.html similarity index 100% rename from public/blog/tag/borders/feed/index.html rename to src/data/blog/tag/borders/feed/index.html diff --git a/public/blog/tag/borders/index.html b/src/data/blog/tag/borders/index.html similarity index 100% rename from public/blog/tag/borders/index.html rename to src/data/blog/tag/borders/index.html diff --git a/public/blog/tag/bound/feed/index.html b/src/data/blog/tag/bound/feed/index.html similarity index 100% rename from public/blog/tag/bound/feed/index.html rename to src/data/blog/tag/bound/feed/index.html diff --git a/public/blog/tag/bound/index.html b/src/data/blog/tag/bound/index.html similarity index 100% rename from public/blog/tag/bound/index.html rename to src/data/blog/tag/bound/index.html diff --git a/public/blog/tag/boundaries/feed/index.html b/src/data/blog/tag/boundaries/feed/index.html similarity index 100% rename from public/blog/tag/boundaries/feed/index.html rename to src/data/blog/tag/boundaries/feed/index.html diff --git a/public/blog/tag/boundaries/index.html b/src/data/blog/tag/boundaries/index.html similarity index 100% rename from public/blog/tag/boundaries/index.html rename to src/data/blog/tag/boundaries/index.html diff --git a/public/blog/tag/box/feed/index.html b/src/data/blog/tag/box/feed/index.html similarity index 100% rename from public/blog/tag/box/feed/index.html rename to src/data/blog/tag/box/feed/index.html diff --git a/public/blog/tag/box/index.html b/src/data/blog/tag/box/index.html similarity index 100% rename from public/blog/tag/box/index.html rename to src/data/blog/tag/box/index.html diff --git a/public/blog/tag/boxes/feed/index.html b/src/data/blog/tag/boxes/feed/index.html similarity index 100% rename from public/blog/tag/boxes/feed/index.html rename to src/data/blog/tag/boxes/feed/index.html diff --git a/public/blog/tag/boxes/index.html b/src/data/blog/tag/boxes/index.html similarity index 100% rename from public/blog/tag/boxes/index.html rename to src/data/blog/tag/boxes/index.html diff --git a/public/blog/tag/browser/feed/index.html b/src/data/blog/tag/browser/feed/index.html similarity index 100% rename from public/blog/tag/browser/feed/index.html rename to src/data/blog/tag/browser/feed/index.html diff --git a/public/blog/tag/browser/index.html b/src/data/blog/tag/browser/index.html similarity index 100% rename from public/blog/tag/browser/index.html rename to src/data/blog/tag/browser/index.html diff --git a/public/blog/tag/buttons/feed/index.html b/src/data/blog/tag/buttons/feed/index.html similarity index 100% rename from public/blog/tag/buttons/feed/index.html rename to src/data/blog/tag/buttons/feed/index.html diff --git a/public/blog/tag/buttons/index.html b/src/data/blog/tag/buttons/index.html similarity index 100% rename from public/blog/tag/buttons/index.html rename to src/data/blog/tag/buttons/index.html diff --git a/public/blog/tag/cell/feed/index.html b/src/data/blog/tag/cell/feed/index.html similarity index 100% rename from public/blog/tag/cell/feed/index.html rename to src/data/blog/tag/cell/feed/index.html diff --git a/public/blog/tag/cell/index.html b/src/data/blog/tag/cell/index.html similarity index 100% rename from public/blog/tag/cell/index.html rename to src/data/blog/tag/cell/index.html diff --git a/public/blog/tag/cells/feed/index.html b/src/data/blog/tag/cells/feed/index.html similarity index 100% rename from public/blog/tag/cells/feed/index.html rename to src/data/blog/tag/cells/feed/index.html diff --git a/public/blog/tag/cells/index.html b/src/data/blog/tag/cells/index.html similarity index 100% rename from public/blog/tag/cells/index.html rename to src/data/blog/tag/cells/index.html diff --git a/public/blog/tag/center/feed/index.html b/src/data/blog/tag/center/feed/index.html similarity index 100% rename from public/blog/tag/center/feed/index.html rename to src/data/blog/tag/center/feed/index.html diff --git a/public/blog/tag/center/index.html b/src/data/blog/tag/center/index.html similarity index 100% rename from public/blog/tag/center/index.html rename to src/data/blog/tag/center/index.html diff --git a/public/blog/tag/changelog/feed/index.html b/src/data/blog/tag/changelog/feed/index.html similarity index 100% rename from public/blog/tag/changelog/feed/index.html rename to src/data/blog/tag/changelog/feed/index.html diff --git a/public/blog/tag/changelog/index.html b/src/data/blog/tag/changelog/index.html similarity index 100% rename from public/blog/tag/changelog/index.html rename to src/data/blog/tag/changelog/index.html diff --git a/public/blog/tag/check/feed/index.html b/src/data/blog/tag/check/feed/index.html similarity index 100% rename from public/blog/tag/check/feed/index.html rename to src/data/blog/tag/check/feed/index.html diff --git a/public/blog/tag/check/index.html b/src/data/blog/tag/check/index.html similarity index 100% rename from public/blog/tag/check/index.html rename to src/data/blog/tag/check/index.html diff --git a/public/blog/tag/checkbox/feed/index.html b/src/data/blog/tag/checkbox/feed/index.html similarity index 100% rename from public/blog/tag/checkbox/feed/index.html rename to src/data/blog/tag/checkbox/feed/index.html diff --git a/public/blog/tag/checkbox/index.html b/src/data/blog/tag/checkbox/index.html similarity index 100% rename from public/blog/tag/checkbox/index.html rename to src/data/blog/tag/checkbox/index.html diff --git a/public/blog/tag/checkboxes/feed/index.html b/src/data/blog/tag/checkboxes/feed/index.html similarity index 100% rename from public/blog/tag/checkboxes/feed/index.html rename to src/data/blog/tag/checkboxes/feed/index.html diff --git a/public/blog/tag/checkboxes/index.html b/src/data/blog/tag/checkboxes/index.html similarity index 100% rename from public/blog/tag/checkboxes/index.html rename to src/data/blog/tag/checkboxes/index.html diff --git a/public/blog/tag/child-items-in-listview/feed/index.html b/src/data/blog/tag/child-items-in-listview/feed/index.html similarity index 100% rename from public/blog/tag/child-items-in-listview/feed/index.html rename to src/data/blog/tag/child-items-in-listview/feed/index.html diff --git a/public/blog/tag/child-items-in-listview/index.html b/src/data/blog/tag/child-items-in-listview/index.html similarity index 100% rename from public/blog/tag/child-items-in-listview/index.html rename to src/data/blog/tag/child-items-in-listview/index.html diff --git a/public/blog/tag/classic/feed/index.html b/src/data/blog/tag/classic/feed/index.html similarity index 100% rename from public/blog/tag/classic/feed/index.html rename to src/data/blog/tag/classic/feed/index.html diff --git a/public/blog/tag/classic/index.html b/src/data/blog/tag/classic/index.html similarity index 100% rename from public/blog/tag/classic/index.html rename to src/data/blog/tag/classic/index.html diff --git a/public/blog/tag/clean-focus/feed/index.html b/src/data/blog/tag/clean-focus/feed/index.html similarity index 100% rename from public/blog/tag/clean-focus/feed/index.html rename to src/data/blog/tag/clean-focus/feed/index.html diff --git a/public/blog/tag/clean-focus/index.html b/src/data/blog/tag/clean-focus/index.html similarity index 100% rename from public/blog/tag/clean-focus/index.html rename to src/data/blog/tag/clean-focus/index.html diff --git a/public/blog/tag/coder-productivity/feed/index.html b/src/data/blog/tag/coder-productivity/feed/index.html similarity index 100% rename from public/blog/tag/coder-productivity/feed/index.html rename to src/data/blog/tag/coder-productivity/feed/index.html diff --git a/public/blog/tag/coder-productivity/index.html b/src/data/blog/tag/coder-productivity/index.html similarity index 100% rename from public/blog/tag/coder-productivity/index.html rename to src/data/blog/tag/coder-productivity/index.html diff --git a/public/blog/tag/collapse/feed/index.html b/src/data/blog/tag/collapse/feed/index.html similarity index 100% rename from public/blog/tag/collapse/feed/index.html rename to src/data/blog/tag/collapse/feed/index.html diff --git a/public/blog/tag/collapse/index.html b/src/data/blog/tag/collapse/index.html similarity index 100% rename from public/blog/tag/collapse/index.html rename to src/data/blog/tag/collapse/index.html diff --git a/public/blog/tag/collapsible/feed/index.html b/src/data/blog/tag/collapsible/feed/index.html similarity index 100% rename from public/blog/tag/collapsible/feed/index.html rename to src/data/blog/tag/collapsible/feed/index.html diff --git a/public/blog/tag/collapsible/index.html b/src/data/blog/tag/collapsible/index.html similarity index 100% rename from public/blog/tag/collapsible/index.html rename to src/data/blog/tag/collapsible/index.html diff --git a/public/blog/tag/color/feed/index.html b/src/data/blog/tag/color/feed/index.html similarity index 100% rename from public/blog/tag/color/feed/index.html rename to src/data/blog/tag/color/feed/index.html diff --git a/public/blog/tag/color/index.html b/src/data/blog/tag/color/index.html similarity index 100% rename from public/blog/tag/color/index.html rename to src/data/blog/tag/color/index.html diff --git a/public/blog/tag/colored/feed/index.html b/src/data/blog/tag/colored/feed/index.html similarity index 100% rename from public/blog/tag/colored/feed/index.html rename to src/data/blog/tag/colored/feed/index.html diff --git a/public/blog/tag/colored/index.html b/src/data/blog/tag/colored/index.html similarity index 100% rename from public/blog/tag/colored/index.html rename to src/data/blog/tag/colored/index.html diff --git a/public/blog/tag/colors/feed/index.html b/src/data/blog/tag/colors/feed/index.html similarity index 100% rename from public/blog/tag/colors/feed/index.html rename to src/data/blog/tag/colors/feed/index.html diff --git a/public/blog/tag/colors/index.html b/src/data/blog/tag/colors/index.html similarity index 100% rename from public/blog/tag/colors/index.html rename to src/data/blog/tag/colors/index.html diff --git a/public/blog/tag/column/feed/index.html b/src/data/blog/tag/column/feed/index.html similarity index 100% rename from public/blog/tag/column/feed/index.html rename to src/data/blog/tag/column/feed/index.html diff --git a/public/blog/tag/column/index.html b/src/data/blog/tag/column/index.html similarity index 100% rename from public/blog/tag/column/index.html rename to src/data/blog/tag/column/index.html diff --git a/public/blog/tag/columns/feed/index.html b/src/data/blog/tag/columns/feed/index.html similarity index 100% rename from public/blog/tag/columns/feed/index.html rename to src/data/blog/tag/columns/feed/index.html diff --git a/public/blog/tag/columns/index.html b/src/data/blog/tag/columns/index.html similarity index 100% rename from public/blog/tag/columns/index.html rename to src/data/blog/tag/columns/index.html diff --git a/public/blog/tag/combined/feed/index.html b/src/data/blog/tag/combined/feed/index.html similarity index 100% rename from public/blog/tag/combined/feed/index.html rename to src/data/blog/tag/combined/feed/index.html diff --git a/public/blog/tag/combined/index.html b/src/data/blog/tag/combined/index.html similarity index 100% rename from public/blog/tag/combined/index.html rename to src/data/blog/tag/combined/index.html diff --git a/public/blog/tag/coming-soon/feed/index.html b/src/data/blog/tag/coming-soon/feed/index.html similarity index 100% rename from public/blog/tag/coming-soon/feed/index.html rename to src/data/blog/tag/coming-soon/feed/index.html diff --git a/public/blog/tag/coming-soon/index.html b/src/data/blog/tag/coming-soon/index.html similarity index 100% rename from public/blog/tag/coming-soon/index.html rename to src/data/blog/tag/coming-soon/index.html diff --git a/public/blog/tag/component/feed/index.html b/src/data/blog/tag/component/feed/index.html similarity index 100% rename from public/blog/tag/component/feed/index.html rename to src/data/blog/tag/component/feed/index.html diff --git a/public/blog/tag/component/index.html b/src/data/blog/tag/component/index.html similarity index 100% rename from public/blog/tag/component/index.html rename to src/data/blog/tag/component/index.html diff --git a/public/blog/tag/computer-work/feed/index.html b/src/data/blog/tag/computer-work/feed/index.html similarity index 100% rename from public/blog/tag/computer-work/feed/index.html rename to src/data/blog/tag/computer-work/feed/index.html diff --git a/public/blog/tag/computer-work/index.html b/src/data/blog/tag/computer-work/index.html similarity index 100% rename from public/blog/tag/computer-work/index.html rename to src/data/blog/tag/computer-work/index.html diff --git a/public/blog/tag/content/feed/index.html b/src/data/blog/tag/content/feed/index.html similarity index 100% rename from public/blog/tag/content/feed/index.html rename to src/data/blog/tag/content/feed/index.html diff --git a/public/blog/tag/content/index.html b/src/data/blog/tag/content/index.html similarity index 100% rename from public/blog/tag/content/index.html rename to src/data/blog/tag/content/index.html diff --git a/public/blog/tag/control/feed/index.html b/src/data/blog/tag/control/feed/index.html similarity index 100% rename from public/blog/tag/control/feed/index.html rename to src/data/blog/tag/control/feed/index.html diff --git a/public/blog/tag/control/index.html b/src/data/blog/tag/control/index.html similarity index 100% rename from public/blog/tag/control/index.html rename to src/data/blog/tag/control/index.html diff --git a/public/blog/tag/controls/feed/index.html b/src/data/blog/tag/controls/feed/index.html similarity index 100% rename from public/blog/tag/controls/feed/index.html rename to src/data/blog/tag/controls/feed/index.html diff --git a/public/blog/tag/controls/index.html b/src/data/blog/tag/controls/index.html similarity index 100% rename from public/blog/tag/controls/index.html rename to src/data/blog/tag/controls/index.html diff --git a/public/blog/tag/crlf/feed/index.html b/src/data/blog/tag/crlf/feed/index.html similarity index 100% rename from public/blog/tag/crlf/feed/index.html rename to src/data/blog/tag/crlf/feed/index.html diff --git a/public/blog/tag/crlf/index.html b/src/data/blog/tag/crlf/index.html similarity index 100% rename from public/blog/tag/crlf/index.html rename to src/data/blog/tag/crlf/index.html diff --git a/public/blog/tag/custom/feed/index.html b/src/data/blog/tag/custom/feed/index.html similarity index 100% rename from public/blog/tag/custom/feed/index.html rename to src/data/blog/tag/custom/feed/index.html diff --git a/public/blog/tag/custom/index.html b/src/data/blog/tag/custom/index.html similarity index 100% rename from public/blog/tag/custom/index.html rename to src/data/blog/tag/custom/index.html diff --git a/public/blog/tag/customize-groups-in-listview/feed/index.html b/src/data/blog/tag/customize-groups-in-listview/feed/index.html similarity index 100% rename from public/blog/tag/customize-groups-in-listview/feed/index.html rename to src/data/blog/tag/customize-groups-in-listview/feed/index.html diff --git a/public/blog/tag/customize-groups-in-listview/index.html b/src/data/blog/tag/customize-groups-in-listview/index.html similarity index 100% rename from public/blog/tag/customize-groups-in-listview/index.html rename to src/data/blog/tag/customize-groups-in-listview/index.html diff --git a/public/blog/tag/customize-list-view-group-headers/feed/index.html b/src/data/blog/tag/customize-list-view-group-headers/feed/index.html similarity index 100% rename from public/blog/tag/customize-list-view-group-headers/feed/index.html rename to src/data/blog/tag/customize-list-view-group-headers/feed/index.html diff --git a/public/blog/tag/customize-list-view-group-headers/index.html b/src/data/blog/tag/customize-list-view-group-headers/index.html similarity index 100% rename from public/blog/tag/customize-list-view-group-headers/index.html rename to src/data/blog/tag/customize-list-view-group-headers/index.html diff --git a/public/blog/tag/customized/feed/index.html b/src/data/blog/tag/customized/feed/index.html similarity index 100% rename from public/blog/tag/customized/feed/index.html rename to src/data/blog/tag/customized/feed/index.html diff --git a/public/blog/tag/customized/index.html b/src/data/blog/tag/customized/index.html similarity index 100% rename from public/blog/tag/customized/index.html rename to src/data/blog/tag/customized/index.html diff --git a/public/blog/tag/data/feed/index.html b/src/data/blog/tag/data/feed/index.html similarity index 100% rename from public/blog/tag/data/feed/index.html rename to src/data/blog/tag/data/feed/index.html diff --git a/public/blog/tag/data/index.html b/src/data/blog/tag/data/index.html similarity index 100% rename from public/blog/tag/data/index.html rename to src/data/blog/tag/data/index.html diff --git a/public/blog/tag/databinding/feed/index.html b/src/data/blog/tag/databinding/feed/index.html similarity index 100% rename from public/blog/tag/databinding/feed/index.html rename to src/data/blog/tag/databinding/feed/index.html diff --git a/public/blog/tag/databinding/index.html b/src/data/blog/tag/databinding/index.html similarity index 100% rename from public/blog/tag/databinding/index.html rename to src/data/blog/tag/databinding/index.html diff --git a/public/blog/tag/databound/feed/index.html b/src/data/blog/tag/databound/feed/index.html similarity index 100% rename from public/blog/tag/databound/feed/index.html rename to src/data/blog/tag/databound/feed/index.html diff --git a/public/blog/tag/databound/index.html b/src/data/blog/tag/databound/index.html similarity index 100% rename from public/blog/tag/databound/index.html rename to src/data/blog/tag/databound/index.html diff --git a/public/blog/tag/default/feed/index.html b/src/data/blog/tag/default/feed/index.html similarity index 100% rename from public/blog/tag/default/feed/index.html rename to src/data/blog/tag/default/feed/index.html diff --git a/public/blog/tag/default/index.html b/src/data/blog/tag/default/index.html similarity index 100% rename from public/blog/tag/default/index.html rename to src/data/blog/tag/default/index.html diff --git a/public/blog/tag/details/feed/index.html b/src/data/blog/tag/details/feed/index.html similarity index 100% rename from public/blog/tag/details/feed/index.html rename to src/data/blog/tag/details/feed/index.html diff --git a/public/blog/tag/details/index.html b/src/data/blog/tag/details/index.html similarity index 100% rename from public/blog/tag/details/index.html rename to src/data/blog/tag/details/index.html diff --git a/public/blog/tag/different/feed/index.html b/src/data/blog/tag/different/feed/index.html similarity index 100% rename from public/blog/tag/different/feed/index.html rename to src/data/blog/tag/different/feed/index.html diff --git a/public/blog/tag/different/index.html b/src/data/blog/tag/different/index.html similarity index 100% rename from public/blog/tag/different/index.html rename to src/data/blog/tag/different/index.html diff --git a/public/blog/tag/disable-item-selection/feed/index.html b/src/data/blog/tag/disable-item-selection/feed/index.html similarity index 100% rename from public/blog/tag/disable-item-selection/feed/index.html rename to src/data/blog/tag/disable-item-selection/feed/index.html diff --git a/public/blog/tag/disable-item-selection/index.html b/src/data/blog/tag/disable-item-selection/index.html similarity index 100% rename from public/blog/tag/disable-item-selection/index.html rename to src/data/blog/tag/disable-item-selection/index.html diff --git a/public/blog/tag/disabled/feed/index.html b/src/data/blog/tag/disabled/feed/index.html similarity index 100% rename from public/blog/tag/disabled/feed/index.html rename to src/data/blog/tag/disabled/feed/index.html diff --git a/public/blog/tag/disabled/index.html b/src/data/blog/tag/disabled/index.html similarity index 100% rename from public/blog/tag/disabled/index.html rename to src/data/blog/tag/disabled/index.html diff --git a/public/blog/tag/display-multiline/feed/index.html b/src/data/blog/tag/display-multiline/feed/index.html similarity index 100% rename from public/blog/tag/display-multiline/feed/index.html rename to src/data/blog/tag/display-multiline/feed/index.html diff --git a/public/blog/tag/display-multiline/index.html b/src/data/blog/tag/display-multiline/index.html similarity index 100% rename from public/blog/tag/display-multiline/index.html rename to src/data/blog/tag/display-multiline/index.html diff --git a/public/blog/tag/display/feed/index.html b/src/data/blog/tag/display/feed/index.html similarity index 100% rename from public/blog/tag/display/feed/index.html rename to src/data/blog/tag/display/feed/index.html diff --git a/public/blog/tag/display/index.html b/src/data/blog/tag/display/index.html similarity index 100% rename from public/blog/tag/display/index.html rename to src/data/blog/tag/display/index.html diff --git a/public/blog/tag/distraction-junkie/feed/index.html b/src/data/blog/tag/distraction-junkie/feed/index.html similarity index 100% rename from public/blog/tag/distraction-junkie/feed/index.html rename to src/data/blog/tag/distraction-junkie/feed/index.html diff --git a/public/blog/tag/distraction-junkie/index.html b/src/data/blog/tag/distraction-junkie/index.html similarity index 100% rename from public/blog/tag/distraction-junkie/index.html rename to src/data/blog/tag/distraction-junkie/index.html diff --git a/public/blog/tag/distractions/feed/index.html b/src/data/blog/tag/distractions/feed/index.html similarity index 100% rename from public/blog/tag/distractions/feed/index.html rename to src/data/blog/tag/distractions/feed/index.html diff --git a/public/blog/tag/distractions/index.html b/src/data/blog/tag/distractions/index.html similarity index 100% rename from public/blog/tag/distractions/index.html rename to src/data/blog/tag/distractions/index.html diff --git a/public/blog/tag/documentation/feed/index.html b/src/data/blog/tag/documentation/feed/index.html similarity index 100% rename from public/blog/tag/documentation/feed/index.html rename to src/data/blog/tag/documentation/feed/index.html diff --git a/public/blog/tag/documentation/index.html b/src/data/blog/tag/documentation/index.html similarity index 100% rename from public/blog/tag/documentation/index.html rename to src/data/blog/tag/documentation/index.html diff --git a/public/blog/tag/drag-and-drop-item-reordering/feed/index.html b/src/data/blog/tag/drag-and-drop-item-reordering/feed/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-item-reordering/feed/index.html rename to src/data/blog/tag/drag-and-drop-item-reordering/feed/index.html diff --git a/public/blog/tag/drag-and-drop-item-reordering/index.html b/src/data/blog/tag/drag-and-drop-item-reordering/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-item-reordering/index.html rename to src/data/blog/tag/drag-and-drop-item-reordering/index.html diff --git a/public/blog/tag/drag-and-drop-item-sort/feed/index.html b/src/data/blog/tag/drag-and-drop-item-sort/feed/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-item-sort/feed/index.html rename to src/data/blog/tag/drag-and-drop-item-sort/feed/index.html diff --git a/public/blog/tag/drag-and-drop-item-sort/index.html b/src/data/blog/tag/drag-and-drop-item-sort/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-item-sort/index.html rename to src/data/blog/tag/drag-and-drop-item-sort/index.html diff --git a/public/blog/tag/drag-and-drop-reordering/feed/index.html b/src/data/blog/tag/drag-and-drop-reordering/feed/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-reordering/feed/index.html rename to src/data/blog/tag/drag-and-drop-reordering/feed/index.html diff --git a/public/blog/tag/drag-and-drop-reordering/index.html b/src/data/blog/tag/drag-and-drop-reordering/index.html similarity index 100% rename from public/blog/tag/drag-and-drop-reordering/index.html rename to src/data/blog/tag/drag-and-drop-reordering/index.html diff --git a/public/blog/tag/draw/feed/index.html b/src/data/blog/tag/draw/feed/index.html similarity index 100% rename from public/blog/tag/draw/feed/index.html rename to src/data/blog/tag/draw/feed/index.html diff --git a/public/blog/tag/draw/index.html b/src/data/blog/tag/draw/index.html similarity index 100% rename from public/blog/tag/draw/index.html rename to src/data/blog/tag/draw/index.html diff --git a/public/blog/tag/drawing/feed/index.html b/src/data/blog/tag/drawing/feed/index.html similarity index 100% rename from public/blog/tag/drawing/feed/index.html rename to src/data/blog/tag/drawing/feed/index.html diff --git a/public/blog/tag/drawing/index.html b/src/data/blog/tag/drawing/index.html similarity index 100% rename from public/blog/tag/drawing/index.html rename to src/data/blog/tag/drawing/index.html diff --git a/public/blog/tag/drawn/feed/index.html b/src/data/blog/tag/drawn/feed/index.html similarity index 100% rename from public/blog/tag/drawn/feed/index.html rename to src/data/blog/tag/drawn/feed/index.html diff --git a/public/blog/tag/drawn/index.html b/src/data/blog/tag/drawn/index.html similarity index 100% rename from public/blog/tag/drawn/index.html rename to src/data/blog/tag/drawn/index.html diff --git a/public/blog/tag/drop-shadow/feed/index.html b/src/data/blog/tag/drop-shadow/feed/index.html similarity index 100% rename from public/blog/tag/drop-shadow/feed/index.html rename to src/data/blog/tag/drop-shadow/feed/index.html diff --git a/public/blog/tag/drop-shadow/index.html b/src/data/blog/tag/drop-shadow/index.html similarity index 100% rename from public/blog/tag/drop-shadow/index.html rename to src/data/blog/tag/drop-shadow/index.html diff --git a/public/blog/tag/dropdown/feed/index.html b/src/data/blog/tag/dropdown/feed/index.html similarity index 100% rename from public/blog/tag/dropdown/feed/index.html rename to src/data/blog/tag/dropdown/feed/index.html diff --git a/public/blog/tag/dropdown/index.html b/src/data/blog/tag/dropdown/index.html similarity index 100% rename from public/blog/tag/dropdown/index.html rename to src/data/blog/tag/dropdown/index.html diff --git a/public/blog/tag/dynamic/feed/index.html b/src/data/blog/tag/dynamic/feed/index.html similarity index 100% rename from public/blog/tag/dynamic/feed/index.html rename to src/data/blog/tag/dynamic/feed/index.html diff --git a/public/blog/tag/dynamic/index.html b/src/data/blog/tag/dynamic/index.html similarity index 100% rename from public/blog/tag/dynamic/index.html rename to src/data/blog/tag/dynamic/index.html diff --git a/public/blog/tag/edge/feed/index.html b/src/data/blog/tag/edge/feed/index.html similarity index 100% rename from public/blog/tag/edge/feed/index.html rename to src/data/blog/tag/edge/feed/index.html diff --git a/public/blog/tag/edge/index.html b/src/data/blog/tag/edge/index.html similarity index 100% rename from public/blog/tag/edge/index.html rename to src/data/blog/tag/edge/index.html diff --git a/public/blog/tag/edges/feed/index.html b/src/data/blog/tag/edges/feed/index.html similarity index 100% rename from public/blog/tag/edges/feed/index.html rename to src/data/blog/tag/edges/feed/index.html diff --git a/public/blog/tag/edges/index.html b/src/data/blog/tag/edges/index.html similarity index 100% rename from public/blog/tag/edges/index.html rename to src/data/blog/tag/edges/index.html diff --git a/public/blog/tag/edit/feed/index.html b/src/data/blog/tag/edit/feed/index.html similarity index 100% rename from public/blog/tag/edit/feed/index.html rename to src/data/blog/tag/edit/feed/index.html diff --git a/public/blog/tag/edit/index.html b/src/data/blog/tag/edit/index.html similarity index 100% rename from public/blog/tag/edit/index.html rename to src/data/blog/tag/edit/index.html diff --git a/public/blog/tag/editing/feed/index.html b/src/data/blog/tag/editing/feed/index.html similarity index 100% rename from public/blog/tag/editing/feed/index.html rename to src/data/blog/tag/editing/feed/index.html diff --git a/public/blog/tag/editing/index.html b/src/data/blog/tag/editing/index.html similarity index 100% rename from public/blog/tag/editing/index.html rename to src/data/blog/tag/editing/index.html diff --git a/public/blog/tag/efficient-work-on-computer/feed/index.html b/src/data/blog/tag/efficient-work-on-computer/feed/index.html similarity index 100% rename from public/blog/tag/efficient-work-on-computer/feed/index.html rename to src/data/blog/tag/efficient-work-on-computer/feed/index.html diff --git a/public/blog/tag/efficient-work-on-computer/index.html b/src/data/blog/tag/efficient-work-on-computer/index.html similarity index 100% rename from public/blog/tag/efficient-work-on-computer/index.html rename to src/data/blog/tag/efficient-work-on-computer/index.html diff --git a/public/blog/tag/embedded/feed/index.html b/src/data/blog/tag/embedded/feed/index.html similarity index 100% rename from public/blog/tag/embedded/feed/index.html rename to src/data/blog/tag/embedded/feed/index.html diff --git a/public/blog/tag/embedded/index.html b/src/data/blog/tag/embedded/index.html similarity index 100% rename from public/blog/tag/embedded/index.html rename to src/data/blog/tag/embedded/index.html diff --git a/public/blog/tag/empty/feed/index.html b/src/data/blog/tag/empty/feed/index.html similarity index 100% rename from public/blog/tag/empty/feed/index.html rename to src/data/blog/tag/empty/feed/index.html diff --git a/public/blog/tag/empty/index.html b/src/data/blog/tag/empty/index.html similarity index 100% rename from public/blog/tag/empty/index.html rename to src/data/blog/tag/empty/index.html diff --git a/public/blog/tag/enabled/feed/index.html b/src/data/blog/tag/enabled/feed/index.html similarity index 100% rename from public/blog/tag/enabled/feed/index.html rename to src/data/blog/tag/enabled/feed/index.html diff --git a/public/blog/tag/enabled/index.html b/src/data/blog/tag/enabled/index.html similarity index 100% rename from public/blog/tag/enabled/index.html rename to src/data/blog/tag/enabled/index.html diff --git a/public/blog/tag/even/feed/index.html b/src/data/blog/tag/even/feed/index.html similarity index 100% rename from public/blog/tag/even/feed/index.html rename to src/data/blog/tag/even/feed/index.html diff --git a/public/blog/tag/even/index.html b/src/data/blog/tag/even/index.html similarity index 100% rename from public/blog/tag/even/index.html rename to src/data/blog/tag/even/index.html diff --git a/public/blog/tag/explorer/feed/index.html b/src/data/blog/tag/explorer/feed/index.html similarity index 100% rename from public/blog/tag/explorer/feed/index.html rename to src/data/blog/tag/explorer/feed/index.html diff --git a/public/blog/tag/explorer/index.html b/src/data/blog/tag/explorer/index.html similarity index 100% rename from public/blog/tag/explorer/index.html rename to src/data/blog/tag/explorer/index.html diff --git a/public/blog/tag/extension/feed/index.html b/src/data/blog/tag/extension/feed/index.html similarity index 100% rename from public/blog/tag/extension/feed/index.html rename to src/data/blog/tag/extension/feed/index.html diff --git a/public/blog/tag/extension/index.html b/src/data/blog/tag/extension/index.html similarity index 100% rename from public/blog/tag/extension/index.html rename to src/data/blog/tag/extension/index.html diff --git a/public/blog/tag/extensions/feed/index.html b/src/data/blog/tag/extensions/feed/index.html similarity index 100% rename from public/blog/tag/extensions/feed/index.html rename to src/data/blog/tag/extensions/feed/index.html diff --git a/public/blog/tag/extensions/index.html b/src/data/blog/tag/extensions/index.html similarity index 100% rename from public/blog/tag/extensions/index.html rename to src/data/blog/tag/extensions/index.html diff --git a/public/blog/tag/fading/feed/index.html b/src/data/blog/tag/fading/feed/index.html similarity index 100% rename from public/blog/tag/fading/feed/index.html rename to src/data/blog/tag/fading/feed/index.html diff --git a/public/blog/tag/fading/index.html b/src/data/blog/tag/fading/index.html similarity index 100% rename from public/blog/tag/fading/index.html rename to src/data/blog/tag/fading/index.html diff --git a/public/blog/tag/fast-listview/feed/index.html b/src/data/blog/tag/fast-listview/feed/index.html similarity index 100% rename from public/blog/tag/fast-listview/feed/index.html rename to src/data/blog/tag/fast-listview/feed/index.html diff --git a/public/blog/tag/fast-listview/index.html b/src/data/blog/tag/fast-listview/index.html similarity index 100% rename from public/blog/tag/fast-listview/index.html rename to src/data/blog/tag/fast-listview/index.html diff --git a/public/blog/tag/fast/feed/index.html b/src/data/blog/tag/fast/feed/index.html similarity index 100% rename from public/blog/tag/fast/feed/index.html rename to src/data/blog/tag/fast/feed/index.html diff --git a/public/blog/tag/fast/index.html b/src/data/blog/tag/fast/index.html similarity index 100% rename from public/blog/tag/fast/index.html rename to src/data/blog/tag/fast/index.html diff --git a/public/blog/tag/faster/feed/index.html b/src/data/blog/tag/faster/feed/index.html similarity index 100% rename from public/blog/tag/faster/feed/index.html rename to src/data/blog/tag/faster/feed/index.html diff --git a/public/blog/tag/faster/index.html b/src/data/blog/tag/faster/index.html similarity index 100% rename from public/blog/tag/faster/index.html rename to src/data/blog/tag/faster/index.html diff --git a/public/blog/tag/features/feed/index.html b/src/data/blog/tag/features/feed/index.html similarity index 100% rename from public/blog/tag/features/feed/index.html rename to src/data/blog/tag/features/feed/index.html diff --git a/public/blog/tag/features/index.html b/src/data/blog/tag/features/index.html similarity index 100% rename from public/blog/tag/features/index.html rename to src/data/blog/tag/features/index.html diff --git a/public/blog/tag/feed/feed/index.html b/src/data/blog/tag/feed/feed/index.html similarity index 100% rename from public/blog/tag/feed/feed/index.html rename to src/data/blog/tag/feed/feed/index.html diff --git a/public/blog/tag/file/feed/index.html b/src/data/blog/tag/file/feed/index.html similarity index 100% rename from public/blog/tag/file/feed/index.html rename to src/data/blog/tag/file/feed/index.html diff --git a/public/blog/tag/file/index.html b/src/data/blog/tag/file/index.html similarity index 100% rename from public/blog/tag/file/index.html rename to src/data/blog/tag/file/index.html diff --git a/public/blog/tag/filename/feed/index.html b/src/data/blog/tag/filename/feed/index.html similarity index 100% rename from public/blog/tag/filename/feed/index.html rename to src/data/blog/tag/filename/feed/index.html diff --git a/public/blog/tag/filename/index.html b/src/data/blog/tag/filename/index.html similarity index 100% rename from public/blog/tag/filename/index.html rename to src/data/blog/tag/filename/index.html diff --git a/public/blog/tag/files/feed/index.html b/src/data/blog/tag/files/feed/index.html similarity index 100% rename from public/blog/tag/files/feed/index.html rename to src/data/blog/tag/files/feed/index.html diff --git a/public/blog/tag/files/index.html b/src/data/blog/tag/files/index.html similarity index 100% rename from public/blog/tag/files/index.html rename to src/data/blog/tag/files/index.html diff --git a/public/blog/tag/focus/feed/index.html b/src/data/blog/tag/focus/feed/index.html similarity index 100% rename from public/blog/tag/focus/feed/index.html rename to src/data/blog/tag/focus/feed/index.html diff --git a/public/blog/tag/focus/index.html b/src/data/blog/tag/focus/index.html similarity index 100% rename from public/blog/tag/focus/index.html rename to src/data/blog/tag/focus/index.html diff --git a/public/blog/tag/focused/feed/index.html b/src/data/blog/tag/focused/feed/index.html similarity index 100% rename from public/blog/tag/focused/feed/index.html rename to src/data/blog/tag/focused/feed/index.html diff --git a/public/blog/tag/focused/index.html b/src/data/blog/tag/focused/index.html similarity index 100% rename from public/blog/tag/focused/index.html rename to src/data/blog/tag/focused/index.html diff --git a/public/blog/tag/folder/feed/index.html b/src/data/blog/tag/folder/feed/index.html similarity index 100% rename from public/blog/tag/folder/feed/index.html rename to src/data/blog/tag/folder/feed/index.html diff --git a/public/blog/tag/folder/index.html b/src/data/blog/tag/folder/index.html similarity index 100% rename from public/blog/tag/folder/index.html rename to src/data/blog/tag/folder/index.html diff --git a/public/blog/tag/font/feed/index.html b/src/data/blog/tag/font/feed/index.html similarity index 100% rename from public/blog/tag/font/feed/index.html rename to src/data/blog/tag/font/feed/index.html diff --git a/public/blog/tag/font/index.html b/src/data/blog/tag/font/index.html similarity index 100% rename from public/blog/tag/font/index.html rename to src/data/blog/tag/font/index.html diff --git a/public/blog/tag/gradient/feed/index.html b/src/data/blog/tag/gradient/feed/index.html similarity index 100% rename from public/blog/tag/gradient/feed/index.html rename to src/data/blog/tag/gradient/feed/index.html diff --git a/public/blog/tag/gradient/index.html b/src/data/blog/tag/gradient/index.html similarity index 100% rename from public/blog/tag/gradient/index.html rename to src/data/blog/tag/gradient/index.html diff --git a/public/blog/tag/grid/feed/index.html b/src/data/blog/tag/grid/feed/index.html similarity index 100% rename from public/blog/tag/grid/feed/index.html rename to src/data/blog/tag/grid/feed/index.html diff --git a/public/blog/tag/grid/index.html b/src/data/blog/tag/grid/index.html similarity index 100% rename from public/blog/tag/grid/index.html rename to src/data/blog/tag/grid/index.html diff --git a/public/blog/tag/gridlines/feed/index.html b/src/data/blog/tag/gridlines/feed/index.html similarity index 100% rename from public/blog/tag/gridlines/feed/index.html rename to src/data/blog/tag/gridlines/feed/index.html diff --git a/public/blog/tag/gridlines/index.html b/src/data/blog/tag/gridlines/index.html similarity index 100% rename from public/blog/tag/gridlines/index.html rename to src/data/blog/tag/gridlines/index.html diff --git a/public/blog/tag/group-header/feed/index.html b/src/data/blog/tag/group-header/feed/index.html similarity index 100% rename from public/blog/tag/group-header/feed/index.html rename to src/data/blog/tag/group-header/feed/index.html diff --git a/public/blog/tag/group-header/index.html b/src/data/blog/tag/group-header/index.html similarity index 100% rename from public/blog/tag/group-header/index.html rename to src/data/blog/tag/group-header/index.html diff --git a/public/blog/tag/group/feed/index.html b/src/data/blog/tag/group/feed/index.html similarity index 100% rename from public/blog/tag/group/feed/index.html rename to src/data/blog/tag/group/feed/index.html diff --git a/public/blog/tag/group/index.html b/src/data/blog/tag/group/index.html similarity index 100% rename from public/blog/tag/group/index.html rename to src/data/blog/tag/group/index.html diff --git a/public/blog/tag/groups/feed/index.html b/src/data/blog/tag/groups/feed/index.html similarity index 100% rename from public/blog/tag/groups/feed/index.html rename to src/data/blog/tag/groups/feed/index.html diff --git a/public/blog/tag/groups/index.html b/src/data/blog/tag/groups/index.html similarity index 100% rename from public/blog/tag/groups/index.html rename to src/data/blog/tag/groups/index.html diff --git a/public/blog/tag/header/feed/index.html b/src/data/blog/tag/header/feed/index.html similarity index 100% rename from public/blog/tag/header/feed/index.html rename to src/data/blog/tag/header/feed/index.html diff --git a/public/blog/tag/header/index.html b/src/data/blog/tag/header/index.html similarity index 100% rename from public/blog/tag/header/index.html rename to src/data/blog/tag/header/index.html diff --git a/public/blog/tag/headers/feed/index.html b/src/data/blog/tag/headers/feed/index.html similarity index 100% rename from public/blog/tag/headers/feed/index.html rename to src/data/blog/tag/headers/feed/index.html diff --git a/public/blog/tag/headers/index.html b/src/data/blog/tag/headers/index.html similarity index 100% rename from public/blog/tag/headers/index.html rename to src/data/blog/tag/headers/index.html diff --git a/public/blog/tag/height/feed/index.html b/src/data/blog/tag/height/feed/index.html similarity index 100% rename from public/blog/tag/height/feed/index.html rename to src/data/blog/tag/height/feed/index.html diff --git a/public/blog/tag/height/index.html b/src/data/blog/tag/height/index.html similarity index 100% rename from public/blog/tag/height/index.html rename to src/data/blog/tag/height/index.html diff --git a/public/blog/tag/hide/feed/index.html b/src/data/blog/tag/hide/feed/index.html similarity index 100% rename from public/blog/tag/hide/feed/index.html rename to src/data/blog/tag/hide/feed/index.html diff --git a/public/blog/tag/hide/index.html b/src/data/blog/tag/hide/index.html similarity index 100% rename from public/blog/tag/hide/index.html rename to src/data/blog/tag/hide/index.html diff --git a/public/blog/tag/hiding/feed/index.html b/src/data/blog/tag/hiding/feed/index.html similarity index 100% rename from public/blog/tag/hiding/feed/index.html rename to src/data/blog/tag/hiding/feed/index.html diff --git a/public/blog/tag/hiding/index.html b/src/data/blog/tag/hiding/index.html similarity index 100% rename from public/blog/tag/hiding/index.html rename to src/data/blog/tag/hiding/index.html diff --git a/public/blog/tag/hierarchy/feed/index.html b/src/data/blog/tag/hierarchy/feed/index.html similarity index 100% rename from public/blog/tag/hierarchy/feed/index.html rename to src/data/blog/tag/hierarchy/feed/index.html diff --git a/public/blog/tag/hierarchy/index.html b/src/data/blog/tag/hierarchy/index.html similarity index 100% rename from public/blog/tag/hierarchy/index.html rename to src/data/blog/tag/hierarchy/index.html diff --git a/public/blog/tag/highlight/feed/index.html b/src/data/blog/tag/highlight/feed/index.html similarity index 100% rename from public/blog/tag/highlight/feed/index.html rename to src/data/blog/tag/highlight/feed/index.html diff --git a/public/blog/tag/highlight/index.html b/src/data/blog/tag/highlight/index.html similarity index 100% rename from public/blog/tag/highlight/index.html rename to src/data/blog/tag/highlight/index.html diff --git a/public/blog/tag/highlighting/feed/index.html b/src/data/blog/tag/highlighting/feed/index.html similarity index 100% rename from public/blog/tag/highlighting/feed/index.html rename to src/data/blog/tag/highlighting/feed/index.html diff --git a/public/blog/tag/highlighting/index.html b/src/data/blog/tag/highlighting/index.html similarity index 100% rename from public/blog/tag/highlighting/index.html rename to src/data/blog/tag/highlighting/index.html diff --git a/public/blog/tag/hot/feed/index.html b/src/data/blog/tag/hot/feed/index.html similarity index 100% rename from public/blog/tag/hot/feed/index.html rename to src/data/blog/tag/hot/feed/index.html diff --git a/public/blog/tag/hot/index.html b/src/data/blog/tag/hot/index.html similarity index 100% rename from public/blog/tag/hot/index.html rename to src/data/blog/tag/hot/index.html diff --git a/public/blog/tag/hottrack/feed/index.html b/src/data/blog/tag/hottrack/feed/index.html similarity index 100% rename from public/blog/tag/hottrack/feed/index.html rename to src/data/blog/tag/hottrack/feed/index.html diff --git a/public/blog/tag/hottrack/index.html b/src/data/blog/tag/hottrack/index.html similarity index 100% rename from public/blog/tag/hottrack/index.html rename to src/data/blog/tag/hottrack/index.html diff --git a/public/blog/tag/hottracking/feed/index.html b/src/data/blog/tag/hottracking/feed/index.html similarity index 100% rename from public/blog/tag/hottracking/feed/index.html rename to src/data/blog/tag/hottracking/feed/index.html diff --git a/public/blog/tag/hottracking/index.html b/src/data/blog/tag/hottracking/index.html similarity index 100% rename from public/blog/tag/hottracking/index.html rename to src/data/blog/tag/hottracking/index.html diff --git a/public/blog/tag/hover/feed/index.html b/src/data/blog/tag/hover/feed/index.html similarity index 100% rename from public/blog/tag/hover/feed/index.html rename to src/data/blog/tag/hover/feed/index.html diff --git a/public/blog/tag/hover/index.html b/src/data/blog/tag/hover/index.html similarity index 100% rename from public/blog/tag/hover/index.html rename to src/data/blog/tag/hover/index.html diff --git a/public/blog/tag/hovers/feed/index.html b/src/data/blog/tag/hovers/feed/index.html similarity index 100% rename from public/blog/tag/hovers/feed/index.html rename to src/data/blog/tag/hovers/feed/index.html diff --git a/public/blog/tag/hovers/index.html b/src/data/blog/tag/hovers/index.html similarity index 100% rename from public/blog/tag/hovers/index.html rename to src/data/blog/tag/hovers/index.html diff --git a/public/blog/tag/how-to/feed/index.html b/src/data/blog/tag/how-to/feed/index.html similarity index 100% rename from public/blog/tag/how-to/feed/index.html rename to src/data/blog/tag/how-to/feed/index.html diff --git a/public/blog/tag/how-to/index.html b/src/data/blog/tag/how-to/index.html similarity index 100% rename from public/blog/tag/how-to/index.html rename to src/data/blog/tag/how-to/index.html diff --git a/public/blog/tag/hyperlink/feed/index.html b/src/data/blog/tag/hyperlink/feed/index.html similarity index 100% rename from public/blog/tag/hyperlink/feed/index.html rename to src/data/blog/tag/hyperlink/feed/index.html diff --git a/public/blog/tag/hyperlink/index.html b/src/data/blog/tag/hyperlink/index.html similarity index 100% rename from public/blog/tag/hyperlink/index.html rename to src/data/blog/tag/hyperlink/index.html diff --git a/public/blog/tag/hyperlinks/feed/index.html b/src/data/blog/tag/hyperlinks/feed/index.html similarity index 100% rename from public/blog/tag/hyperlinks/feed/index.html rename to src/data/blog/tag/hyperlinks/feed/index.html diff --git a/public/blog/tag/hyperlinks/index.html b/src/data/blog/tag/hyperlinks/index.html similarity index 100% rename from public/blog/tag/hyperlinks/index.html rename to src/data/blog/tag/hyperlinks/index.html diff --git a/public/blog/tag/icon/feed/index.html b/src/data/blog/tag/icon/feed/index.html similarity index 100% rename from public/blog/tag/icon/feed/index.html rename to src/data/blog/tag/icon/feed/index.html diff --git a/public/blog/tag/icon/index.html b/src/data/blog/tag/icon/index.html similarity index 100% rename from public/blog/tag/icon/index.html rename to src/data/blog/tag/icon/index.html diff --git a/public/blog/tag/icons/feed/index.html b/src/data/blog/tag/icons/feed/index.html similarity index 100% rename from public/blog/tag/icons/feed/index.html rename to src/data/blog/tag/icons/feed/index.html diff --git a/public/blog/tag/icons/index.html b/src/data/blog/tag/icons/index.html similarity index 100% rename from public/blog/tag/icons/index.html rename to src/data/blog/tag/icons/index.html diff --git a/public/blog/tag/image-borders/feed/index.html b/src/data/blog/tag/image-borders/feed/index.html similarity index 100% rename from public/blog/tag/image-borders/feed/index.html rename to src/data/blog/tag/image-borders/feed/index.html diff --git a/public/blog/tag/image-borders/index.html b/src/data/blog/tag/image-borders/index.html similarity index 100% rename from public/blog/tag/image-borders/index.html rename to src/data/blog/tag/image-borders/index.html diff --git a/public/blog/tag/image/feed/index.html b/src/data/blog/tag/image/feed/index.html similarity index 100% rename from public/blog/tag/image/feed/index.html rename to src/data/blog/tag/image/feed/index.html diff --git a/public/blog/tag/image/index.html b/src/data/blog/tag/image/index.html similarity index 100% rename from public/blog/tag/image/index.html rename to src/data/blog/tag/image/index.html diff --git a/public/blog/tag/imagekey/feed/index.html b/src/data/blog/tag/imagekey/feed/index.html similarity index 100% rename from public/blog/tag/imagekey/feed/index.html rename to src/data/blog/tag/imagekey/feed/index.html diff --git a/public/blog/tag/imagekey/index.html b/src/data/blog/tag/imagekey/index.html similarity index 100% rename from public/blog/tag/imagekey/index.html rename to src/data/blog/tag/imagekey/index.html diff --git a/public/blog/tag/imagelist/feed/index.html b/src/data/blog/tag/imagelist/feed/index.html similarity index 100% rename from public/blog/tag/imagelist/feed/index.html rename to src/data/blog/tag/imagelist/feed/index.html diff --git a/public/blog/tag/imagelist/index.html b/src/data/blog/tag/imagelist/index.html similarity index 100% rename from public/blog/tag/imagelist/index.html rename to src/data/blog/tag/imagelist/index.html diff --git a/public/blog/tag/images/feed/index.html b/src/data/blog/tag/images/feed/index.html similarity index 100% rename from public/blog/tag/images/feed/index.html rename to src/data/blog/tag/images/feed/index.html diff --git a/public/blog/tag/images/index.html b/src/data/blog/tag/images/index.html similarity index 100% rename from public/blog/tag/images/index.html rename to src/data/blog/tag/images/index.html diff --git a/public/blog/tag/internet-addiction/feed/index.html b/src/data/blog/tag/internet-addiction/feed/index.html similarity index 100% rename from public/blog/tag/internet-addiction/feed/index.html rename to src/data/blog/tag/internet-addiction/feed/index.html diff --git a/public/blog/tag/internet-addiction/index.html b/src/data/blog/tag/internet-addiction/index.html similarity index 100% rename from public/blog/tag/internet-addiction/index.html rename to src/data/blog/tag/internet-addiction/index.html diff --git a/public/blog/tag/invisible/feed/index.html b/src/data/blog/tag/invisible/feed/index.html similarity index 100% rename from public/blog/tag/invisible/feed/index.html rename to src/data/blog/tag/invisible/feed/index.html diff --git a/public/blog/tag/invisible/index.html b/src/data/blog/tag/invisible/index.html similarity index 100% rename from public/blog/tag/invisible/index.html rename to src/data/blog/tag/invisible/index.html diff --git a/public/blog/tag/item-height-in-list-view/feed/index.html b/src/data/blog/tag/item-height-in-list-view/feed/index.html similarity index 100% rename from public/blog/tag/item-height-in-list-view/feed/index.html rename to src/data/blog/tag/item-height-in-list-view/feed/index.html diff --git a/public/blog/tag/item-height-in-list-view/index.html b/src/data/blog/tag/item-height-in-list-view/index.html similarity index 100% rename from public/blog/tag/item-height-in-list-view/index.html rename to src/data/blog/tag/item-height-in-list-view/index.html diff --git a/public/blog/tag/item-height/feed/index.html b/src/data/blog/tag/item-height/feed/index.html similarity index 100% rename from public/blog/tag/item-height/feed/index.html rename to src/data/blog/tag/item-height/feed/index.html diff --git a/public/blog/tag/item-height/index.html b/src/data/blog/tag/item-height/index.html similarity index 100% rename from public/blog/tag/item-height/index.html rename to src/data/blog/tag/item-height/index.html diff --git a/public/blog/tag/item-hierarchy/feed/index.html b/src/data/blog/tag/item-hierarchy/feed/index.html similarity index 100% rename from public/blog/tag/item-hierarchy/feed/index.html rename to src/data/blog/tag/item-hierarchy/feed/index.html diff --git a/public/blog/tag/item-hierarchy/index.html b/src/data/blog/tag/item-hierarchy/index.html similarity index 100% rename from public/blog/tag/item-hierarchy/index.html rename to src/data/blog/tag/item-hierarchy/index.html diff --git a/public/blog/tag/item-reorder/feed/index.html b/src/data/blog/tag/item-reorder/feed/index.html similarity index 100% rename from public/blog/tag/item-reorder/feed/index.html rename to src/data/blog/tag/item-reorder/feed/index.html diff --git a/public/blog/tag/item-reorder/index.html b/src/data/blog/tag/item-reorder/index.html similarity index 100% rename from public/blog/tag/item-reorder/index.html rename to src/data/blog/tag/item-reorder/index.html diff --git a/public/blog/tag/item-sort/feed/index.html b/src/data/blog/tag/item-sort/feed/index.html similarity index 100% rename from public/blog/tag/item-sort/feed/index.html rename to src/data/blog/tag/item-sort/feed/index.html diff --git a/public/blog/tag/item-sort/index.html b/src/data/blog/tag/item-sort/index.html similarity index 100% rename from public/blog/tag/item-sort/index.html rename to src/data/blog/tag/item-sort/index.html diff --git a/public/blog/tag/item/feed/index.html b/src/data/blog/tag/item/feed/index.html similarity index 100% rename from public/blog/tag/item/feed/index.html rename to src/data/blog/tag/item/feed/index.html diff --git a/public/blog/tag/item/index.html b/src/data/blog/tag/item/index.html similarity index 100% rename from public/blog/tag/item/index.html rename to src/data/blog/tag/item/index.html diff --git a/public/blog/tag/items/feed/index.html b/src/data/blog/tag/items/feed/index.html similarity index 100% rename from public/blog/tag/items/feed/index.html rename to src/data/blog/tag/items/feed/index.html diff --git a/public/blog/tag/items/index.html b/src/data/blog/tag/items/index.html similarity index 100% rename from public/blog/tag/items/index.html rename to src/data/blog/tag/items/index.html diff --git a/public/blog/tag/label/feed/index.html b/src/data/blog/tag/label/feed/index.html similarity index 100% rename from public/blog/tag/label/feed/index.html rename to src/data/blog/tag/label/feed/index.html diff --git a/public/blog/tag/label/index.html b/src/data/blog/tag/label/index.html similarity index 100% rename from public/blog/tag/label/index.html rename to src/data/blog/tag/label/index.html diff --git a/public/blog/tag/labeledit/feed/index.html b/src/data/blog/tag/labeledit/feed/index.html similarity index 100% rename from public/blog/tag/labeledit/feed/index.html rename to src/data/blog/tag/labeledit/feed/index.html diff --git a/public/blog/tag/labeledit/index.html b/src/data/blog/tag/labeledit/index.html similarity index 100% rename from public/blog/tag/labeledit/index.html rename to src/data/blog/tag/labeledit/index.html diff --git a/public/blog/tag/large/feed/index.html b/src/data/blog/tag/large/feed/index.html similarity index 100% rename from public/blog/tag/large/feed/index.html rename to src/data/blog/tag/large/feed/index.html diff --git a/public/blog/tag/large/index.html b/src/data/blog/tag/large/index.html similarity index 100% rename from public/blog/tag/large/index.html rename to src/data/blog/tag/large/index.html diff --git a/public/blog/tag/larger/feed/index.html b/src/data/blog/tag/larger/feed/index.html similarity index 100% rename from public/blog/tag/larger/feed/index.html rename to src/data/blog/tag/larger/feed/index.html diff --git a/public/blog/tag/larger/index.html b/src/data/blog/tag/larger/index.html similarity index 100% rename from public/blog/tag/larger/index.html rename to src/data/blog/tag/larger/index.html diff --git a/public/blog/tag/layout/feed/index.html b/src/data/blog/tag/layout/feed/index.html similarity index 100% rename from public/blog/tag/layout/feed/index.html rename to src/data/blog/tag/layout/feed/index.html diff --git a/public/blog/tag/layout/index.html b/src/data/blog/tag/layout/index.html similarity index 100% rename from public/blog/tag/layout/index.html rename to src/data/blog/tag/layout/index.html diff --git a/public/blog/tag/lf/feed/index.html b/src/data/blog/tag/lf/feed/index.html similarity index 100% rename from public/blog/tag/lf/feed/index.html rename to src/data/blog/tag/lf/feed/index.html diff --git a/public/blog/tag/lf/index.html b/src/data/blog/tag/lf/index.html similarity index 100% rename from public/blog/tag/lf/index.html rename to src/data/blog/tag/lf/index.html diff --git a/public/blog/tag/line/feed/index.html b/src/data/blog/tag/line/feed/index.html similarity index 100% rename from public/blog/tag/line/feed/index.html rename to src/data/blog/tag/line/feed/index.html diff --git a/public/blog/tag/line/index.html b/src/data/blog/tag/line/index.html similarity index 100% rename from public/blog/tag/line/index.html rename to src/data/blog/tag/line/index.html diff --git a/public/blog/tag/linefeed/feed/index.html b/src/data/blog/tag/linefeed/feed/index.html similarity index 100% rename from public/blog/tag/linefeed/feed/index.html rename to src/data/blog/tag/linefeed/feed/index.html diff --git a/public/blog/tag/linefeed/index.html b/src/data/blog/tag/linefeed/index.html similarity index 100% rename from public/blog/tag/linefeed/index.html rename to src/data/blog/tag/linefeed/index.html diff --git a/public/blog/tag/lines/feed/index.html b/src/data/blog/tag/lines/feed/index.html similarity index 100% rename from public/blog/tag/lines/feed/index.html rename to src/data/blog/tag/lines/feed/index.html diff --git a/public/blog/tag/lines/index.html b/src/data/blog/tag/lines/index.html similarity index 100% rename from public/blog/tag/lines/index.html rename to src/data/blog/tag/lines/index.html diff --git a/public/blog/tag/links/feed/index.html b/src/data/blog/tag/links/feed/index.html similarity index 100% rename from public/blog/tag/links/feed/index.html rename to src/data/blog/tag/links/feed/index.html diff --git a/public/blog/tag/links/index.html b/src/data/blog/tag/links/index.html similarity index 100% rename from public/blog/tag/links/index.html rename to src/data/blog/tag/links/index.html diff --git a/public/blog/tag/list-view-group-headers/feed/index.html b/src/data/blog/tag/list-view-group-headers/feed/index.html similarity index 100% rename from public/blog/tag/list-view-group-headers/feed/index.html rename to src/data/blog/tag/list-view-group-headers/feed/index.html diff --git a/public/blog/tag/list-view-group-headers/index.html b/src/data/blog/tag/list-view-group-headers/index.html similarity index 100% rename from public/blog/tag/list-view-group-headers/index.html rename to src/data/blog/tag/list-view-group-headers/index.html diff --git a/public/blog/tag/list/feed/index.html b/src/data/blog/tag/list/feed/index.html similarity index 100% rename from public/blog/tag/list/feed/index.html rename to src/data/blog/tag/list/feed/index.html diff --git a/public/blog/tag/list/index.html b/src/data/blog/tag/list/index.html similarity index 100% rename from public/blog/tag/list/index.html rename to src/data/blog/tag/list/index.html diff --git a/public/blog/tag/listview-tree/feed/index.html b/src/data/blog/tag/listview-tree/feed/index.html similarity index 100% rename from public/blog/tag/listview-tree/feed/index.html rename to src/data/blog/tag/listview-tree/feed/index.html diff --git a/public/blog/tag/listview-tree/index.html b/src/data/blog/tag/listview-tree/index.html similarity index 100% rename from public/blog/tag/listview-tree/index.html rename to src/data/blog/tag/listview-tree/index.html diff --git a/public/blog/tag/listview/feed/index.html b/src/data/blog/tag/listview/feed/index.html similarity index 100% rename from public/blog/tag/listview/feed/index.html rename to src/data/blog/tag/listview/feed/index.html diff --git a/public/blog/tag/listview/index.html b/src/data/blog/tag/listview/index.html similarity index 100% rename from public/blog/tag/listview/index.html rename to src/data/blog/tag/listview/index.html diff --git a/public/blog/tag/load/feed/index.html b/src/data/blog/tag/load/feed/index.html similarity index 100% rename from public/blog/tag/load/feed/index.html rename to src/data/blog/tag/load/feed/index.html diff --git a/public/blog/tag/load/index.html b/src/data/blog/tag/load/index.html similarity index 100% rename from public/blog/tag/load/index.html rename to src/data/blog/tag/load/index.html diff --git a/public/blog/tag/loading/feed/index.html b/src/data/blog/tag/loading/feed/index.html similarity index 100% rename from public/blog/tag/loading/feed/index.html rename to src/data/blog/tag/loading/feed/index.html diff --git a/public/blog/tag/loading/index.html b/src/data/blog/tag/loading/index.html similarity index 100% rename from public/blog/tag/loading/index.html rename to src/data/blog/tag/loading/index.html diff --git a/public/blog/tag/luna/feed/index.html b/src/data/blog/tag/luna/feed/index.html similarity index 100% rename from public/blog/tag/luna/feed/index.html rename to src/data/blog/tag/luna/feed/index.html diff --git a/public/blog/tag/luna/index.html b/src/data/blog/tag/luna/index.html similarity index 100% rename from public/blog/tag/luna/index.html rename to src/data/blog/tag/luna/index.html diff --git a/public/blog/tag/mark/feed/index.html b/src/data/blog/tag/mark/feed/index.html similarity index 100% rename from public/blog/tag/mark/feed/index.html rename to src/data/blog/tag/mark/feed/index.html diff --git a/public/blog/tag/mark/index.html b/src/data/blog/tag/mark/index.html similarity index 100% rename from public/blog/tag/mark/index.html rename to src/data/blog/tag/mark/index.html diff --git a/public/blog/tag/matched/feed/index.html b/src/data/blog/tag/matched/feed/index.html similarity index 100% rename from public/blog/tag/matched/feed/index.html rename to src/data/blog/tag/matched/feed/index.html diff --git a/public/blog/tag/matched/index.html b/src/data/blog/tag/matched/index.html similarity index 100% rename from public/blog/tag/matched/index.html rename to src/data/blog/tag/matched/index.html diff --git a/public/blog/tag/mental-work/feed/index.html b/src/data/blog/tag/mental-work/feed/index.html similarity index 100% rename from public/blog/tag/mental-work/feed/index.html rename to src/data/blog/tag/mental-work/feed/index.html diff --git a/public/blog/tag/mental-work/index.html b/src/data/blog/tag/mental-work/index.html similarity index 100% rename from public/blog/tag/mental-work/index.html rename to src/data/blog/tag/mental-work/index.html diff --git a/public/blog/tag/migration/feed/index.html b/src/data/blog/tag/migration/feed/index.html similarity index 100% rename from public/blog/tag/migration/feed/index.html rename to src/data/blog/tag/migration/feed/index.html diff --git a/public/blog/tag/migration/index.html b/src/data/blog/tag/migration/index.html similarity index 100% rename from public/blog/tag/migration/index.html rename to src/data/blog/tag/migration/index.html diff --git a/public/blog/tag/mode/feed/index.html b/src/data/blog/tag/mode/feed/index.html similarity index 100% rename from public/blog/tag/mode/feed/index.html rename to src/data/blog/tag/mode/feed/index.html diff --git a/public/blog/tag/mode/index.html b/src/data/blog/tag/mode/index.html similarity index 100% rename from public/blog/tag/mode/index.html rename to src/data/blog/tag/mode/index.html diff --git a/public/blog/tag/mouse-wheel/feed/index.html b/src/data/blog/tag/mouse-wheel/feed/index.html similarity index 100% rename from public/blog/tag/mouse-wheel/feed/index.html rename to src/data/blog/tag/mouse-wheel/feed/index.html diff --git a/public/blog/tag/mouse-wheel/index.html b/src/data/blog/tag/mouse-wheel/index.html similarity index 100% rename from public/blog/tag/mouse-wheel/index.html rename to src/data/blog/tag/mouse-wheel/index.html diff --git a/public/blog/tag/mouse/feed/index.html b/src/data/blog/tag/mouse/feed/index.html similarity index 100% rename from public/blog/tag/mouse/feed/index.html rename to src/data/blog/tag/mouse/feed/index.html diff --git a/public/blog/tag/mouse/index.html b/src/data/blog/tag/mouse/index.html similarity index 100% rename from public/blog/tag/mouse/index.html rename to src/data/blog/tag/mouse/index.html diff --git a/public/blog/tag/multi-line/feed/index.html b/src/data/blog/tag/multi-line/feed/index.html similarity index 100% rename from public/blog/tag/multi-line/feed/index.html rename to src/data/blog/tag/multi-line/feed/index.html diff --git a/public/blog/tag/multi-line/index.html b/src/data/blog/tag/multi-line/index.html similarity index 100% rename from public/blog/tag/multi-line/index.html rename to src/data/blog/tag/multi-line/index.html diff --git a/public/blog/tag/multi/feed/index.html b/src/data/blog/tag/multi/feed/index.html similarity index 100% rename from public/blog/tag/multi/feed/index.html rename to src/data/blog/tag/multi/feed/index.html diff --git a/public/blog/tag/multi/index.html b/src/data/blog/tag/multi/index.html similarity index 100% rename from public/blog/tag/multi/index.html rename to src/data/blog/tag/multi/index.html diff --git a/public/blog/tag/multiline-items/feed/index.html b/src/data/blog/tag/multiline-items/feed/index.html similarity index 100% rename from public/blog/tag/multiline-items/feed/index.html rename to src/data/blog/tag/multiline-items/feed/index.html diff --git a/public/blog/tag/multiline-items/index.html b/src/data/blog/tag/multiline-items/index.html similarity index 100% rename from public/blog/tag/multiline-items/index.html rename to src/data/blog/tag/multiline-items/index.html diff --git a/public/blog/tag/multiline/feed/index.html b/src/data/blog/tag/multiline/feed/index.html similarity index 100% rename from public/blog/tag/multiline/feed/index.html rename to src/data/blog/tag/multiline/feed/index.html diff --git a/public/blog/tag/multiline/index.html b/src/data/blog/tag/multiline/index.html similarity index 100% rename from public/blog/tag/multiline/index.html rename to src/data/blog/tag/multiline/index.html diff --git a/public/blog/tag/native-look/feed/index.html b/src/data/blog/tag/native-look/feed/index.html similarity index 100% rename from public/blog/tag/native-look/feed/index.html rename to src/data/blog/tag/native-look/feed/index.html diff --git a/public/blog/tag/native-look/index.html b/src/data/blog/tag/native-look/index.html similarity index 100% rename from public/blog/tag/native-look/index.html rename to src/data/blog/tag/native-look/index.html diff --git a/public/blog/tag/new-release/feed/index.html b/src/data/blog/tag/new-release/feed/index.html similarity index 100% rename from public/blog/tag/new-release/feed/index.html rename to src/data/blog/tag/new-release/feed/index.html diff --git a/public/blog/tag/new-release/index.html b/src/data/blog/tag/new-release/index.html similarity index 100% rename from public/blog/tag/new-release/index.html rename to src/data/blog/tag/new-release/index.html diff --git a/public/blog/tag/newline/feed/index.html b/src/data/blog/tag/newline/feed/index.html similarity index 100% rename from public/blog/tag/newline/feed/index.html rename to src/data/blog/tag/newline/feed/index.html diff --git a/public/blog/tag/newline/index.html b/src/data/blog/tag/newline/index.html similarity index 100% rename from public/blog/tag/newline/index.html rename to src/data/blog/tag/newline/index.html diff --git a/public/blog/tag/newlines/feed/index.html b/src/data/blog/tag/newlines/feed/index.html similarity index 100% rename from public/blog/tag/newlines/feed/index.html rename to src/data/blog/tag/newlines/feed/index.html diff --git a/public/blog/tag/newlines/index.html b/src/data/blog/tag/newlines/index.html similarity index 100% rename from public/blog/tag/newlines/index.html rename to src/data/blog/tag/newlines/index.html diff --git a/public/blog/tag/nodes/feed/index.html b/src/data/blog/tag/nodes/feed/index.html similarity index 100% rename from public/blog/tag/nodes/feed/index.html rename to src/data/blog/tag/nodes/feed/index.html diff --git a/public/blog/tag/nodes/index.html b/src/data/blog/tag/nodes/index.html similarity index 100% rename from public/blog/tag/nodes/index.html rename to src/data/blog/tag/nodes/index.html diff --git a/public/blog/tag/non-selectable-list-view-items/feed/index.html b/src/data/blog/tag/non-selectable-list-view-items/feed/index.html similarity index 100% rename from public/blog/tag/non-selectable-list-view-items/feed/index.html rename to src/data/blog/tag/non-selectable-list-view-items/feed/index.html diff --git a/public/blog/tag/non-selectable-list-view-items/index.html b/src/data/blog/tag/non-selectable-list-view-items/index.html similarity index 100% rename from public/blog/tag/non-selectable-list-view-items/index.html rename to src/data/blog/tag/non-selectable-list-view-items/index.html diff --git a/public/blog/tag/non-selectable/feed/index.html b/src/data/blog/tag/non-selectable/feed/index.html similarity index 100% rename from public/blog/tag/non-selectable/feed/index.html rename to src/data/blog/tag/non-selectable/feed/index.html diff --git a/public/blog/tag/non-selectable/index.html b/src/data/blog/tag/non-selectable/index.html similarity index 100% rename from public/blog/tag/non-selectable/index.html rename to src/data/blog/tag/non-selectable/index.html diff --git a/public/blog/tag/nonselectable/feed/index.html b/src/data/blog/tag/nonselectable/feed/index.html similarity index 100% rename from public/blog/tag/nonselectable/feed/index.html rename to src/data/blog/tag/nonselectable/feed/index.html diff --git a/public/blog/tag/nonselectable/index.html b/src/data/blog/tag/nonselectable/index.html similarity index 100% rename from public/blog/tag/nonselectable/index.html rename to src/data/blog/tag/nonselectable/index.html diff --git a/public/blog/tag/odd/feed/index.html b/src/data/blog/tag/odd/feed/index.html similarity index 100% rename from public/blog/tag/odd/feed/index.html rename to src/data/blog/tag/odd/feed/index.html diff --git a/public/blog/tag/odd/index.html b/src/data/blog/tag/odd/index.html similarity index 100% rename from public/blog/tag/odd/index.html rename to src/data/blog/tag/odd/index.html diff --git a/public/blog/tag/optimization/feed/index.html b/src/data/blog/tag/optimization/feed/index.html similarity index 100% rename from public/blog/tag/optimization/feed/index.html rename to src/data/blog/tag/optimization/feed/index.html diff --git a/public/blog/tag/optimization/index.html b/src/data/blog/tag/optimization/index.html similarity index 100% rename from public/blog/tag/optimization/index.html rename to src/data/blog/tag/optimization/index.html diff --git a/public/blog/tag/over/feed/index.html b/src/data/blog/tag/over/feed/index.html similarity index 100% rename from public/blog/tag/over/feed/index.html rename to src/data/blog/tag/over/feed/index.html diff --git a/public/blog/tag/over/index.html b/src/data/blog/tag/over/index.html similarity index 100% rename from public/blog/tag/over/index.html rename to src/data/blog/tag/over/index.html diff --git a/public/blog/tag/owner/feed/index.html b/src/data/blog/tag/owner/feed/index.html similarity index 100% rename from public/blog/tag/owner/feed/index.html rename to src/data/blog/tag/owner/feed/index.html diff --git a/public/blog/tag/owner/index.html b/src/data/blog/tag/owner/index.html similarity index 100% rename from public/blog/tag/owner/index.html rename to src/data/blog/tag/owner/index.html diff --git a/public/blog/tag/ownerdraw/feed/index.html b/src/data/blog/tag/ownerdraw/feed/index.html similarity index 100% rename from public/blog/tag/ownerdraw/feed/index.html rename to src/data/blog/tag/ownerdraw/feed/index.html diff --git a/public/blog/tag/ownerdraw/index.html b/src/data/blog/tag/ownerdraw/index.html similarity index 100% rename from public/blog/tag/ownerdraw/index.html rename to src/data/blog/tag/ownerdraw/index.html diff --git a/public/blog/tag/ownerdrawing/feed/index.html b/src/data/blog/tag/ownerdrawing/feed/index.html similarity index 100% rename from public/blog/tag/ownerdrawing/feed/index.html rename to src/data/blog/tag/ownerdrawing/feed/index.html diff --git a/public/blog/tag/ownerdrawing/index.html b/src/data/blog/tag/ownerdrawing/index.html similarity index 100% rename from public/blog/tag/ownerdrawing/index.html rename to src/data/blog/tag/ownerdrawing/index.html diff --git a/public/blog/tag/ownerdrawn/feed/index.html b/src/data/blog/tag/ownerdrawn/feed/index.html similarity index 100% rename from public/blog/tag/ownerdrawn/feed/index.html rename to src/data/blog/tag/ownerdrawn/feed/index.html diff --git a/public/blog/tag/ownerdrawn/index.html b/src/data/blog/tag/ownerdrawn/index.html similarity index 100% rename from public/blog/tag/ownerdrawn/index.html rename to src/data/blog/tag/ownerdrawn/index.html diff --git a/public/blog/tag/padding/feed/index.html b/src/data/blog/tag/padding/feed/index.html similarity index 100% rename from public/blog/tag/padding/feed/index.html rename to src/data/blog/tag/padding/feed/index.html diff --git a/public/blog/tag/padding/index.html b/src/data/blog/tag/padding/index.html similarity index 100% rename from public/blog/tag/padding/index.html rename to src/data/blog/tag/padding/index.html diff --git a/public/blog/tag/per-line/feed/index.html b/src/data/blog/tag/per-line/feed/index.html similarity index 100% rename from public/blog/tag/per-line/feed/index.html rename to src/data/blog/tag/per-line/feed/index.html diff --git a/public/blog/tag/per-line/index.html b/src/data/blog/tag/per-line/index.html similarity index 100% rename from public/blog/tag/per-line/index.html rename to src/data/blog/tag/per-line/index.html diff --git a/public/blog/tag/performance/feed/index.html b/src/data/blog/tag/performance/feed/index.html similarity index 100% rename from public/blog/tag/performance/feed/index.html rename to src/data/blog/tag/performance/feed/index.html diff --git a/public/blog/tag/performance/index.html b/src/data/blog/tag/performance/index.html similarity index 100% rename from public/blog/tag/performance/index.html rename to src/data/blog/tag/performance/index.html diff --git a/public/blog/tag/prevent-item-selection-in-list-view/feed/index.html b/src/data/blog/tag/prevent-item-selection-in-list-view/feed/index.html similarity index 100% rename from public/blog/tag/prevent-item-selection-in-list-view/feed/index.html rename to src/data/blog/tag/prevent-item-selection-in-list-view/feed/index.html diff --git a/public/blog/tag/prevent-item-selection-in-list-view/index.html b/src/data/blog/tag/prevent-item-selection-in-list-view/index.html similarity index 100% rename from public/blog/tag/prevent-item-selection-in-list-view/index.html rename to src/data/blog/tag/prevent-item-selection-in-list-view/index.html diff --git a/public/blog/tag/preview/feed/index.html b/src/data/blog/tag/preview/feed/index.html similarity index 100% rename from public/blog/tag/preview/feed/index.html rename to src/data/blog/tag/preview/feed/index.html diff --git a/public/blog/tag/preview/index.html b/src/data/blog/tag/preview/index.html similarity index 100% rename from public/blog/tag/preview/index.html rename to src/data/blog/tag/preview/index.html diff --git a/public/blog/tag/productivity/feed/index.html b/src/data/blog/tag/productivity/feed/index.html similarity index 100% rename from public/blog/tag/productivity/feed/index.html rename to src/data/blog/tag/productivity/feed/index.html diff --git a/public/blog/tag/productivity/index.html b/src/data/blog/tag/productivity/index.html similarity index 100% rename from public/blog/tag/productivity/index.html rename to src/data/blog/tag/productivity/index.html diff --git a/public/blog/tag/programming-productivity/feed/index.html b/src/data/blog/tag/programming-productivity/feed/index.html similarity index 100% rename from public/blog/tag/programming-productivity/feed/index.html rename to src/data/blog/tag/programming-productivity/feed/index.html diff --git a/public/blog/tag/programming-productivity/index.html b/src/data/blog/tag/programming-productivity/index.html similarity index 100% rename from public/blog/tag/programming-productivity/index.html rename to src/data/blog/tag/programming-productivity/index.html diff --git a/public/blog/tag/progress/feed/index.html b/src/data/blog/tag/progress/feed/index.html similarity index 100% rename from public/blog/tag/progress/feed/index.html rename to src/data/blog/tag/progress/feed/index.html diff --git a/public/blog/tag/progress/index.html b/src/data/blog/tag/progress/index.html similarity index 100% rename from public/blog/tag/progress/index.html rename to src/data/blog/tag/progress/index.html diff --git a/public/blog/tag/radio/feed/index.html b/src/data/blog/tag/radio/feed/index.html similarity index 100% rename from public/blog/tag/radio/feed/index.html rename to src/data/blog/tag/radio/feed/index.html diff --git a/public/blog/tag/radio/index.html b/src/data/blog/tag/radio/index.html similarity index 100% rename from public/blog/tag/radio/index.html rename to src/data/blog/tag/radio/index.html diff --git a/public/blog/tag/radios/feed/index.html b/src/data/blog/tag/radios/feed/index.html similarity index 100% rename from public/blog/tag/radios/feed/index.html rename to src/data/blog/tag/radios/feed/index.html diff --git a/public/blog/tag/radios/index.html b/src/data/blog/tag/radios/index.html similarity index 100% rename from public/blog/tag/radios/index.html rename to src/data/blog/tag/radios/index.html diff --git a/public/blog/tag/read-only/feed/index.html b/src/data/blog/tag/read-only/feed/index.html similarity index 100% rename from public/blog/tag/read-only/feed/index.html rename to src/data/blog/tag/read-only/feed/index.html diff --git a/public/blog/tag/read-only/index.html b/src/data/blog/tag/read-only/index.html similarity index 100% rename from public/blog/tag/read-only/index.html rename to src/data/blog/tag/read-only/index.html diff --git a/public/blog/tag/readonly/feed/index.html b/src/data/blog/tag/readonly/feed/index.html similarity index 100% rename from public/blog/tag/readonly/feed/index.html rename to src/data/blog/tag/readonly/feed/index.html diff --git a/public/blog/tag/readonly/index.html b/src/data/blog/tag/readonly/index.html similarity index 100% rename from public/blog/tag/readonly/index.html rename to src/data/blog/tag/readonly/index.html diff --git a/public/blog/tag/refresh/feed/index.html b/src/data/blog/tag/refresh/feed/index.html similarity index 100% rename from public/blog/tag/refresh/feed/index.html rename to src/data/blog/tag/refresh/feed/index.html diff --git a/public/blog/tag/refresh/index.html b/src/data/blog/tag/refresh/index.html similarity index 100% rename from public/blog/tag/refresh/index.html rename to src/data/blog/tag/refresh/index.html diff --git a/public/blog/tag/relaxing-when-working-on-computer/feed/index.html b/src/data/blog/tag/relaxing-when-working-on-computer/feed/index.html similarity index 100% rename from public/blog/tag/relaxing-when-working-on-computer/feed/index.html rename to src/data/blog/tag/relaxing-when-working-on-computer/feed/index.html diff --git a/public/blog/tag/relaxing-when-working-on-computer/index.html b/src/data/blog/tag/relaxing-when-working-on-computer/index.html similarity index 100% rename from public/blog/tag/relaxing-when-working-on-computer/index.html rename to src/data/blog/tag/relaxing-when-working-on-computer/index.html diff --git a/public/blog/tag/rename/feed/index.html b/src/data/blog/tag/rename/feed/index.html similarity index 100% rename from public/blog/tag/rename/feed/index.html rename to src/data/blog/tag/rename/feed/index.html diff --git a/public/blog/tag/rename/index.html b/src/data/blog/tag/rename/index.html similarity index 100% rename from public/blog/tag/rename/index.html rename to src/data/blog/tag/rename/index.html diff --git a/public/blog/tag/reorder/feed/index.html b/src/data/blog/tag/reorder/feed/index.html similarity index 100% rename from public/blog/tag/reorder/feed/index.html rename to src/data/blog/tag/reorder/feed/index.html diff --git a/public/blog/tag/reorder/index.html b/src/data/blog/tag/reorder/index.html similarity index 100% rename from public/blog/tag/reorder/index.html rename to src/data/blog/tag/reorder/index.html diff --git a/public/blog/tag/reordering/feed/index.html b/src/data/blog/tag/reordering/feed/index.html similarity index 100% rename from public/blog/tag/reordering/feed/index.html rename to src/data/blog/tag/reordering/feed/index.html diff --git a/public/blog/tag/reordering/index.html b/src/data/blog/tag/reordering/index.html similarity index 100% rename from public/blog/tag/reordering/index.html rename to src/data/blog/tag/reordering/index.html diff --git a/public/blog/tag/right/feed/index.html b/src/data/blog/tag/right/feed/index.html similarity index 100% rename from public/blog/tag/right/feed/index.html rename to src/data/blog/tag/right/feed/index.html diff --git a/public/blog/tag/right/index.html b/src/data/blog/tag/right/index.html similarity index 100% rename from public/blog/tag/right/index.html rename to src/data/blog/tag/right/index.html diff --git a/public/blog/tag/rows/feed/index.html b/src/data/blog/tag/rows/feed/index.html similarity index 100% rename from public/blog/tag/rows/feed/index.html rename to src/data/blog/tag/rows/feed/index.html diff --git a/public/blog/tag/rows/index.html b/src/data/blog/tag/rows/index.html similarity index 100% rename from public/blog/tag/rows/index.html rename to src/data/blog/tag/rows/index.html diff --git a/public/blog/tag/runtime/feed/index.html b/src/data/blog/tag/runtime/feed/index.html similarity index 100% rename from public/blog/tag/runtime/feed/index.html rename to src/data/blog/tag/runtime/feed/index.html diff --git a/public/blog/tag/runtime/index.html b/src/data/blog/tag/runtime/index.html similarity index 100% rename from public/blog/tag/runtime/index.html rename to src/data/blog/tag/runtime/index.html diff --git a/public/blog/tag/save/feed/index.html b/src/data/blog/tag/save/feed/index.html similarity index 100% rename from public/blog/tag/save/feed/index.html rename to src/data/blog/tag/save/feed/index.html diff --git a/public/blog/tag/save/index.html b/src/data/blog/tag/save/index.html similarity index 100% rename from public/blog/tag/save/index.html rename to src/data/blog/tag/save/index.html diff --git a/public/blog/tag/scroll/feed/index.html b/src/data/blog/tag/scroll/feed/index.html similarity index 100% rename from public/blog/tag/scroll/feed/index.html rename to src/data/blog/tag/scroll/feed/index.html diff --git a/public/blog/tag/scroll/index.html b/src/data/blog/tag/scroll/index.html similarity index 100% rename from public/blog/tag/scroll/index.html rename to src/data/blog/tag/scroll/index.html diff --git a/public/blog/tag/scrollbar/feed/index.html b/src/data/blog/tag/scrollbar/feed/index.html similarity index 100% rename from public/blog/tag/scrollbar/feed/index.html rename to src/data/blog/tag/scrollbar/feed/index.html diff --git a/public/blog/tag/scrollbar/index.html b/src/data/blog/tag/scrollbar/index.html similarity index 100% rename from public/blog/tag/scrollbar/index.html rename to src/data/blog/tag/scrollbar/index.html diff --git a/public/blog/tag/scrollbars/feed/index.html b/src/data/blog/tag/scrollbars/feed/index.html similarity index 100% rename from public/blog/tag/scrollbars/feed/index.html rename to src/data/blog/tag/scrollbars/feed/index.html diff --git a/public/blog/tag/scrollbars/index.html b/src/data/blog/tag/scrollbars/index.html similarity index 100% rename from public/blog/tag/scrollbars/index.html rename to src/data/blog/tag/scrollbars/index.html diff --git a/public/blog/tag/scrolling/feed/index.html b/src/data/blog/tag/scrolling/feed/index.html similarity index 100% rename from public/blog/tag/scrolling/feed/index.html rename to src/data/blog/tag/scrolling/feed/index.html diff --git a/public/blog/tag/scrolling/index.html b/src/data/blog/tag/scrolling/index.html similarity index 100% rename from public/blog/tag/scrolling/index.html rename to src/data/blog/tag/scrolling/index.html diff --git a/public/blog/tag/search/feed/index.html b/src/data/blog/tag/search/feed/index.html similarity index 100% rename from public/blog/tag/search/feed/index.html rename to src/data/blog/tag/search/feed/index.html diff --git a/public/blog/tag/search/index.html b/src/data/blog/tag/search/index.html similarity index 100% rename from public/blog/tag/search/index.html rename to src/data/blog/tag/search/index.html diff --git a/public/blog/tag/searching/feed/index.html b/src/data/blog/tag/searching/feed/index.html similarity index 100% rename from public/blog/tag/searching/feed/index.html rename to src/data/blog/tag/searching/feed/index.html diff --git a/public/blog/tag/searching/index.html b/src/data/blog/tag/searching/index.html similarity index 100% rename from public/blog/tag/searching/index.html rename to src/data/blog/tag/searching/index.html diff --git a/public/blog/tag/selection/feed/index.html b/src/data/blog/tag/selection/feed/index.html similarity index 100% rename from public/blog/tag/selection/feed/index.html rename to src/data/blog/tag/selection/feed/index.html diff --git a/public/blog/tag/selection/index.html b/src/data/blog/tag/selection/index.html similarity index 100% rename from public/blog/tag/selection/index.html rename to src/data/blog/tag/selection/index.html diff --git a/public/blog/tag/separators/feed/index.html b/src/data/blog/tag/separators/feed/index.html similarity index 100% rename from public/blog/tag/separators/feed/index.html rename to src/data/blog/tag/separators/feed/index.html diff --git a/public/blog/tag/separators/index.html b/src/data/blog/tag/separators/index.html similarity index 100% rename from public/blog/tag/separators/index.html rename to src/data/blog/tag/separators/index.html diff --git a/public/blog/tag/serialization/feed/index.html b/src/data/blog/tag/serialization/feed/index.html similarity index 100% rename from public/blog/tag/serialization/feed/index.html rename to src/data/blog/tag/serialization/feed/index.html diff --git a/public/blog/tag/serialization/index.html b/src/data/blog/tag/serialization/index.html similarity index 100% rename from public/blog/tag/serialization/index.html rename to src/data/blog/tag/serialization/index.html diff --git a/public/blog/tag/serialize/feed/index.html b/src/data/blog/tag/serialize/feed/index.html similarity index 100% rename from public/blog/tag/serialize/feed/index.html rename to src/data/blog/tag/serialize/feed/index.html diff --git a/public/blog/tag/serialize/index.html b/src/data/blog/tag/serialize/index.html similarity index 100% rename from public/blog/tag/serialize/index.html rename to src/data/blog/tag/serialize/index.html diff --git a/public/blog/tag/shadows/feed/index.html b/src/data/blog/tag/shadows/feed/index.html similarity index 100% rename from public/blog/tag/shadows/feed/index.html rename to src/data/blog/tag/shadows/feed/index.html diff --git a/public/blog/tag/shadows/index.html b/src/data/blog/tag/shadows/index.html similarity index 100% rename from public/blog/tag/shadows/index.html rename to src/data/blog/tag/shadows/index.html diff --git a/public/blog/tag/size/feed/index.html b/src/data/blog/tag/size/feed/index.html similarity index 100% rename from public/blog/tag/size/feed/index.html rename to src/data/blog/tag/size/feed/index.html diff --git a/public/blog/tag/size/index.html b/src/data/blog/tag/size/index.html similarity index 100% rename from public/blog/tag/size/index.html rename to src/data/blog/tag/size/index.html diff --git a/public/blog/tag/sizes/feed/index.html b/src/data/blog/tag/sizes/feed/index.html similarity index 100% rename from public/blog/tag/sizes/feed/index.html rename to src/data/blog/tag/sizes/feed/index.html diff --git a/public/blog/tag/sizes/index.html b/src/data/blog/tag/sizes/index.html similarity index 100% rename from public/blog/tag/sizes/index.html rename to src/data/blog/tag/sizes/index.html diff --git a/public/blog/tag/sort/feed/index.html b/src/data/blog/tag/sort/feed/index.html similarity index 100% rename from public/blog/tag/sort/feed/index.html rename to src/data/blog/tag/sort/feed/index.html diff --git a/public/blog/tag/sort/index.html b/src/data/blog/tag/sort/index.html similarity index 100% rename from public/blog/tag/sort/index.html rename to src/data/blog/tag/sort/index.html diff --git a/public/blog/tag/sorting/feed/index.html b/src/data/blog/tag/sorting/feed/index.html similarity index 100% rename from public/blog/tag/sorting/feed/index.html rename to src/data/blog/tag/sorting/feed/index.html diff --git a/public/blog/tag/sorting/index.html b/src/data/blog/tag/sorting/index.html similarity index 100% rename from public/blog/tag/sorting/index.html rename to src/data/blog/tag/sorting/index.html diff --git a/public/blog/tag/space/feed/index.html b/src/data/blog/tag/space/feed/index.html similarity index 100% rename from public/blog/tag/space/feed/index.html rename to src/data/blog/tag/space/feed/index.html diff --git a/public/blog/tag/space/index.html b/src/data/blog/tag/space/index.html similarity index 100% rename from public/blog/tag/space/index.html rename to src/data/blog/tag/space/index.html diff --git a/public/blog/tag/spacing/feed/index.html b/src/data/blog/tag/spacing/feed/index.html similarity index 100% rename from public/blog/tag/spacing/feed/index.html rename to src/data/blog/tag/spacing/feed/index.html diff --git a/public/blog/tag/spacing/index.html b/src/data/blog/tag/spacing/index.html similarity index 100% rename from public/blog/tag/spacing/index.html rename to src/data/blog/tag/spacing/index.html diff --git a/public/blog/tag/specific/feed/index.html b/src/data/blog/tag/specific/feed/index.html similarity index 100% rename from public/blog/tag/specific/feed/index.html rename to src/data/blog/tag/specific/feed/index.html diff --git a/public/blog/tag/specific/index.html b/src/data/blog/tag/specific/index.html similarity index 100% rename from public/blog/tag/specific/index.html rename to src/data/blog/tag/specific/index.html diff --git a/public/blog/tag/state/feed/index.html b/src/data/blog/tag/state/feed/index.html similarity index 100% rename from public/blog/tag/state/feed/index.html rename to src/data/blog/tag/state/feed/index.html diff --git a/public/blog/tag/state/index.html b/src/data/blog/tag/state/index.html similarity index 100% rename from public/blog/tag/state/index.html rename to src/data/blog/tag/state/index.html diff --git a/public/blog/tag/store/feed/index.html b/src/data/blog/tag/store/feed/index.html similarity index 100% rename from public/blog/tag/store/feed/index.html rename to src/data/blog/tag/store/feed/index.html diff --git a/public/blog/tag/store/index.html b/src/data/blog/tag/store/index.html similarity index 100% rename from public/blog/tag/store/index.html rename to src/data/blog/tag/store/index.html diff --git a/public/blog/tag/styles/feed/index.html b/src/data/blog/tag/styles/feed/index.html similarity index 100% rename from public/blog/tag/styles/feed/index.html rename to src/data/blog/tag/styles/feed/index.html diff --git a/public/blog/tag/styles/index.html b/src/data/blog/tag/styles/index.html similarity index 100% rename from public/blog/tag/styles/index.html rename to src/data/blog/tag/styles/index.html diff --git a/public/blog/tag/sub-item/feed/index.html b/src/data/blog/tag/sub-item/feed/index.html similarity index 100% rename from public/blog/tag/sub-item/feed/index.html rename to src/data/blog/tag/sub-item/feed/index.html diff --git a/public/blog/tag/sub-item/index.html b/src/data/blog/tag/sub-item/index.html similarity index 100% rename from public/blog/tag/sub-item/index.html rename to src/data/blog/tag/sub-item/index.html diff --git a/public/blog/tag/sub-items/feed/index.html b/src/data/blog/tag/sub-items/feed/index.html similarity index 100% rename from public/blog/tag/sub-items/feed/index.html rename to src/data/blog/tag/sub-items/feed/index.html diff --git a/public/blog/tag/sub-items/index.html b/src/data/blog/tag/sub-items/index.html similarity index 100% rename from public/blog/tag/sub-items/index.html rename to src/data/blog/tag/sub-items/index.html diff --git a/public/blog/tag/sub/feed/index.html b/src/data/blog/tag/sub/feed/index.html similarity index 100% rename from public/blog/tag/sub/feed/index.html rename to src/data/blog/tag/sub/feed/index.html diff --git a/public/blog/tag/sub/index.html b/src/data/blog/tag/sub/index.html similarity index 100% rename from public/blog/tag/sub/index.html rename to src/data/blog/tag/sub/index.html diff --git a/public/blog/tag/subitem/feed/index.html b/src/data/blog/tag/subitem/feed/index.html similarity index 100% rename from public/blog/tag/subitem/feed/index.html rename to src/data/blog/tag/subitem/feed/index.html diff --git a/public/blog/tag/subitem/index.html b/src/data/blog/tag/subitem/index.html similarity index 100% rename from public/blog/tag/subitem/index.html rename to src/data/blog/tag/subitem/index.html diff --git a/public/blog/tag/subitems/feed/index.html b/src/data/blog/tag/subitems/feed/index.html similarity index 100% rename from public/blog/tag/subitems/feed/index.html rename to src/data/blog/tag/subitems/feed/index.html diff --git a/public/blog/tag/subitems/index.html b/src/data/blog/tag/subitems/index.html similarity index 100% rename from public/blog/tag/subitems/index.html rename to src/data/blog/tag/subitems/index.html diff --git a/public/blog/tag/support/feed/index.html b/src/data/blog/tag/support/feed/index.html similarity index 100% rename from public/blog/tag/support/feed/index.html rename to src/data/blog/tag/support/feed/index.html diff --git a/public/blog/tag/support/index.html b/src/data/blog/tag/support/index.html similarity index 100% rename from public/blog/tag/support/index.html rename to src/data/blog/tag/support/index.html diff --git a/public/blog/tag/text/feed/index.html b/src/data/blog/tag/text/feed/index.html similarity index 100% rename from public/blog/tag/text/feed/index.html rename to src/data/blog/tag/text/feed/index.html diff --git a/public/blog/tag/text/index.html b/src/data/blog/tag/text/index.html similarity index 100% rename from public/blog/tag/text/index.html rename to src/data/blog/tag/text/index.html diff --git a/public/blog/tag/theme/feed/index.html b/src/data/blog/tag/theme/feed/index.html similarity index 100% rename from public/blog/tag/theme/feed/index.html rename to src/data/blog/tag/theme/feed/index.html diff --git a/public/blog/tag/theme/index.html b/src/data/blog/tag/theme/index.html similarity index 100% rename from public/blog/tag/theme/index.html rename to src/data/blog/tag/theme/index.html diff --git a/public/blog/tag/themes/feed/index.html b/src/data/blog/tag/themes/feed/index.html similarity index 100% rename from public/blog/tag/themes/feed/index.html rename to src/data/blog/tag/themes/feed/index.html diff --git a/public/blog/tag/themes/index.html b/src/data/blog/tag/themes/index.html similarity index 100% rename from public/blog/tag/themes/index.html rename to src/data/blog/tag/themes/index.html diff --git a/public/blog/tag/thumbnail-view/feed/index.html b/src/data/blog/tag/thumbnail-view/feed/index.html similarity index 100% rename from public/blog/tag/thumbnail-view/feed/index.html rename to src/data/blog/tag/thumbnail-view/feed/index.html diff --git a/public/blog/tag/thumbnail-view/index.html b/src/data/blog/tag/thumbnail-view/index.html similarity index 100% rename from public/blog/tag/thumbnail-view/index.html rename to src/data/blog/tag/thumbnail-view/index.html diff --git a/public/blog/tag/thumbnail/feed/index.html b/src/data/blog/tag/thumbnail/feed/index.html similarity index 100% rename from public/blog/tag/thumbnail/feed/index.html rename to src/data/blog/tag/thumbnail/feed/index.html diff --git a/public/blog/tag/thumbnail/index.html b/src/data/blog/tag/thumbnail/index.html similarity index 100% rename from public/blog/tag/thumbnail/index.html rename to src/data/blog/tag/thumbnail/index.html diff --git a/public/blog/tag/thumbnailbrowser/feed/index.html b/src/data/blog/tag/thumbnailbrowser/feed/index.html similarity index 100% rename from public/blog/tag/thumbnailbrowser/feed/index.html rename to src/data/blog/tag/thumbnailbrowser/feed/index.html diff --git a/public/blog/tag/thumbnailbrowser/index.html b/src/data/blog/tag/thumbnailbrowser/index.html similarity index 100% rename from public/blog/tag/thumbnailbrowser/index.html rename to src/data/blog/tag/thumbnailbrowser/index.html diff --git a/public/blog/tag/thumbnails-view/feed/index.html b/src/data/blog/tag/thumbnails-view/feed/index.html similarity index 100% rename from public/blog/tag/thumbnails-view/feed/index.html rename to src/data/blog/tag/thumbnails-view/feed/index.html diff --git a/public/blog/tag/thumbnails-view/index.html b/src/data/blog/tag/thumbnails-view/index.html similarity index 100% rename from public/blog/tag/thumbnails-view/index.html rename to src/data/blog/tag/thumbnails-view/index.html diff --git a/public/blog/tag/thumbnails/feed/index.html b/src/data/blog/tag/thumbnails/feed/index.html similarity index 100% rename from public/blog/tag/thumbnails/feed/index.html rename to src/data/blog/tag/thumbnails/feed/index.html diff --git a/public/blog/tag/thumbnails/index.html b/src/data/blog/tag/thumbnails/index.html similarity index 100% rename from public/blog/tag/thumbnails/index.html rename to src/data/blog/tag/thumbnails/index.html diff --git a/public/blog/tag/tips-and-tricks/feed/index.html b/src/data/blog/tag/tips-and-tricks/feed/index.html similarity index 100% rename from public/blog/tag/tips-and-tricks/feed/index.html rename to src/data/blog/tag/tips-and-tricks/feed/index.html diff --git a/public/blog/tag/tips-and-tricks/index.html b/src/data/blog/tag/tips-and-tricks/index.html similarity index 100% rename from public/blog/tag/tips-and-tricks/index.html rename to src/data/blog/tag/tips-and-tricks/index.html diff --git a/public/blog/tag/tracking/feed/index.html b/src/data/blog/tag/tracking/feed/index.html similarity index 100% rename from public/blog/tag/tracking/feed/index.html rename to src/data/blog/tag/tracking/feed/index.html diff --git a/public/blog/tag/tracking/index.html b/src/data/blog/tag/tracking/index.html similarity index 100% rename from public/blog/tag/tracking/index.html rename to src/data/blog/tag/tracking/index.html diff --git a/public/blog/tag/tree-structure-in-listview/feed/index.html b/src/data/blog/tag/tree-structure-in-listview/feed/index.html similarity index 100% rename from public/blog/tag/tree-structure-in-listview/feed/index.html rename to src/data/blog/tag/tree-structure-in-listview/feed/index.html diff --git a/public/blog/tag/tree-structure-in-listview/index.html b/src/data/blog/tag/tree-structure-in-listview/index.html similarity index 100% rename from public/blog/tag/tree-structure-in-listview/index.html rename to src/data/blog/tag/tree-structure-in-listview/index.html diff --git a/public/blog/tag/tree/feed/index.html b/src/data/blog/tag/tree/feed/index.html similarity index 100% rename from public/blog/tag/tree/feed/index.html rename to src/data/blog/tag/tree/feed/index.html diff --git a/public/blog/tag/tree/index.html b/src/data/blog/tag/tree/index.html similarity index 100% rename from public/blog/tag/tree/index.html rename to src/data/blog/tag/tree/index.html diff --git a/public/blog/tag/treeview/feed/index.html b/src/data/blog/tag/treeview/feed/index.html similarity index 100% rename from public/blog/tag/treeview/feed/index.html rename to src/data/blog/tag/treeview/feed/index.html diff --git a/public/blog/tag/treeview/index.html b/src/data/blog/tag/treeview/index.html similarity index 100% rename from public/blog/tag/treeview/index.html rename to src/data/blog/tag/treeview/index.html diff --git a/public/blog/tag/underline/feed/index.html b/src/data/blog/tag/underline/feed/index.html similarity index 100% rename from public/blog/tag/underline/feed/index.html rename to src/data/blog/tag/underline/feed/index.html diff --git a/public/blog/tag/underline/index.html b/src/data/blog/tag/underline/index.html similarity index 100% rename from public/blog/tag/underline/index.html rename to src/data/blog/tag/underline/index.html diff --git a/public/blog/tag/update/feed/index.html b/src/data/blog/tag/update/feed/index.html similarity index 100% rename from public/blog/tag/update/feed/index.html rename to src/data/blog/tag/update/feed/index.html diff --git a/public/blog/tag/update/index.html b/src/data/blog/tag/update/index.html similarity index 100% rename from public/blog/tag/update/index.html rename to src/data/blog/tag/update/index.html diff --git a/public/blog/tag/variable/feed/index.html b/src/data/blog/tag/variable/feed/index.html similarity index 100% rename from public/blog/tag/variable/feed/index.html rename to src/data/blog/tag/variable/feed/index.html diff --git a/public/blog/tag/variable/index.html b/src/data/blog/tag/variable/index.html similarity index 100% rename from public/blog/tag/variable/index.html rename to src/data/blog/tag/variable/index.html diff --git a/public/blog/tag/vertical/feed/index.html b/src/data/blog/tag/vertical/feed/index.html similarity index 100% rename from public/blog/tag/vertical/feed/index.html rename to src/data/blog/tag/vertical/feed/index.html diff --git a/public/blog/tag/vertical/index.html b/src/data/blog/tag/vertical/index.html similarity index 100% rename from public/blog/tag/vertical/index.html rename to src/data/blog/tag/vertical/index.html diff --git a/public/blog/tag/view/feed/index.html b/src/data/blog/tag/view/feed/index.html similarity index 100% rename from public/blog/tag/view/feed/index.html rename to src/data/blog/tag/view/feed/index.html diff --git a/public/blog/tag/view/index.html b/src/data/blog/tag/view/index.html similarity index 100% rename from public/blog/tag/view/index.html rename to src/data/blog/tag/view/index.html diff --git a/public/blog/tag/visibility/feed/index.html b/src/data/blog/tag/visibility/feed/index.html similarity index 100% rename from public/blog/tag/visibility/feed/index.html rename to src/data/blog/tag/visibility/feed/index.html diff --git a/public/blog/tag/visibility/index.html b/src/data/blog/tag/visibility/index.html similarity index 100% rename from public/blog/tag/visibility/index.html rename to src/data/blog/tag/visibility/index.html diff --git a/public/blog/tag/visible/feed/index.html b/src/data/blog/tag/visible/feed/index.html similarity index 100% rename from public/blog/tag/visible/feed/index.html rename to src/data/blog/tag/visible/feed/index.html diff --git a/public/blog/tag/visible/index.html b/src/data/blog/tag/visible/index.html similarity index 100% rename from public/blog/tag/visible/index.html rename to src/data/blog/tag/visible/index.html diff --git a/public/blog/tag/visual/feed/index.html b/src/data/blog/tag/visual/feed/index.html similarity index 100% rename from public/blog/tag/visual/feed/index.html rename to src/data/blog/tag/visual/feed/index.html diff --git a/public/blog/tag/visual/index.html b/src/data/blog/tag/visual/index.html similarity index 100% rename from public/blog/tag/visual/index.html rename to src/data/blog/tag/visual/index.html diff --git a/public/blog/tag/whats-new/feed/index.html b/src/data/blog/tag/whats-new/feed/index.html similarity index 100% rename from public/blog/tag/whats-new/feed/index.html rename to src/data/blog/tag/whats-new/feed/index.html diff --git a/public/blog/tag/whats-new/index.html b/src/data/blog/tag/whats-new/index.html similarity index 100% rename from public/blog/tag/whats-new/index.html rename to src/data/blog/tag/whats-new/index.html diff --git a/public/blog/tag/width/feed/index.html b/src/data/blog/tag/width/feed/index.html similarity index 100% rename from public/blog/tag/width/feed/index.html rename to src/data/blog/tag/width/feed/index.html diff --git a/public/blog/tag/width/index.html b/src/data/blog/tag/width/index.html similarity index 100% rename from public/blog/tag/width/index.html rename to src/data/blog/tag/width/index.html diff --git a/public/blog/tag/winforms/feed/index.html b/src/data/blog/tag/winforms/feed/index.html similarity index 100% rename from public/blog/tag/winforms/feed/index.html rename to src/data/blog/tag/winforms/feed/index.html diff --git a/public/blog/tag/winforms/index.html b/src/data/blog/tag/winforms/index.html similarity index 100% rename from public/blog/tag/winforms/index.html rename to src/data/blog/tag/winforms/index.html diff --git a/public/blog/tag/work-focus/feed/index.html b/src/data/blog/tag/work-focus/feed/index.html similarity index 100% rename from public/blog/tag/work-focus/feed/index.html rename to src/data/blog/tag/work-focus/feed/index.html diff --git a/public/blog/tag/work-focus/index.html b/src/data/blog/tag/work-focus/index.html similarity index 100% rename from public/blog/tag/work-focus/index.html rename to src/data/blog/tag/work-focus/index.html diff --git a/public/blog/tag/working-on/feed/index.html b/src/data/blog/tag/working-on/feed/index.html similarity index 100% rename from public/blog/tag/working-on/feed/index.html rename to src/data/blog/tag/working-on/feed/index.html diff --git a/public/blog/tag/working-on/index.html b/src/data/blog/tag/working-on/index.html similarity index 100% rename from public/blog/tag/working-on/index.html rename to src/data/blog/tag/working-on/index.html diff --git a/public/blog/tag/wrapping/feed/index.html b/src/data/blog/tag/wrapping/feed/index.html similarity index 100% rename from public/blog/tag/wrapping/feed/index.html rename to src/data/blog/tag/wrapping/feed/index.html diff --git a/public/blog/tag/wrapping/index.html b/src/data/blog/tag/wrapping/index.html similarity index 100% rename from public/blog/tag/wrapping/index.html rename to src/data/blog/tag/wrapping/index.html diff --git a/public/blog/tag/xp/feed/index.html b/src/data/blog/tag/xp/feed/index.html similarity index 100% rename from public/blog/tag/xp/feed/index.html rename to src/data/blog/tag/xp/feed/index.html diff --git a/public/blog/tag/xp/index.html b/src/data/blog/tag/xp/index.html similarity index 100% rename from public/blog/tag/xp/index.html rename to src/data/blog/tag/xp/index.html diff --git a/public/blog/tag/zen-coder/feed/index.html b/src/data/blog/tag/zen-coder/feed/index.html similarity index 100% rename from public/blog/tag/zen-coder/feed/index.html rename to src/data/blog/tag/zen-coder/feed/index.html diff --git a/public/blog/tag/zen-coder/index.html b/src/data/blog/tag/zen-coder/index.html similarity index 100% rename from public/blog/tag/zen-coder/index.html rename to src/data/blog/tag/zen-coder/index.html diff --git a/public/blog/tag/zen-habits/feed/index.html b/src/data/blog/tag/zen-habits/feed/index.html similarity index 100% rename from public/blog/tag/zen-habits/feed/index.html rename to src/data/blog/tag/zen-habits/feed/index.html diff --git a/public/blog/tag/zen-habits/index.html b/src/data/blog/tag/zen-habits/index.html similarity index 100% rename from public/blog/tag/zen-habits/index.html rename to src/data/blog/tag/zen-habits/index.html diff --git a/public/blog/tag/zen/feed/index.html b/src/data/blog/tag/zen/feed/index.html similarity index 100% rename from public/blog/tag/zen/feed/index.html rename to src/data/blog/tag/zen/feed/index.html diff --git a/public/blog/tag/zen/index.html b/src/data/blog/tag/zen/index.html similarity index 100% rename from public/blog/tag/zen/index.html rename to src/data/blog/tag/zen/index.html diff --git a/public/blog/tedious-work-with-groups-and-item-hierarchy-features/feed/index.html b/src/data/blog/tedious-work-with-groups-and-item-hierarchy-features/feed/index.html similarity index 100% rename from public/blog/tedious-work-with-groups-and-item-hierarchy-features/feed/index.html rename to src/data/blog/tedious-work-with-groups-and-item-hierarchy-features/feed/index.html diff --git a/public/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/feed/index.html b/src/data/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/feed/index.html similarity index 100% rename from public/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/feed/index.html rename to src/data/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/feed/index.html diff --git a/public/blog/vertical-alignment-and-text-wrapping-in-better-listview/feed/index.html b/src/data/blog/vertical-alignment-and-text-wrapping-in-better-listview/feed/index.html similarity index 100% rename from public/blog/vertical-alignment-and-text-wrapping-in-better-listview/feed/index.html rename to src/data/blog/vertical-alignment-and-text-wrapping-in-better-listview/feed/index.html diff --git a/public/blog/what-we-are-working-on-groups-item-hierarchy-support/feed/index.html b/src/data/blog/what-we-are-working-on-groups-item-hierarchy-support/feed/index.html similarity index 100% rename from public/blog/what-we-are-working-on-groups-item-hierarchy-support/feed/index.html rename to src/data/blog/what-we-are-working-on-groups-item-hierarchy-support/feed/index.html diff --git a/public/blog/windows-theme-support-in-better-listview/feed/index.html b/src/data/blog/windows-theme-support-in-better-listview/feed/index.html similarity index 100% rename from public/blog/windows-theme-support-in-better-listview/feed/index.html rename to src/data/blog/windows-theme-support-in-better-listview/feed/index.html diff --git a/public/blog/zen-coder-vs-distraction-junkie/feed/index.html b/src/data/blog/zen-coder-vs-distraction-junkie/feed/index.html similarity index 100% rename from public/blog/zen-coder-vs-distraction-junkie/feed/index.html rename to src/data/blog/zen-coder-vs-distraction-junkie/feed/index.html diff --git a/src/data/comics/1.html b/src/data/comics/1.html new file mode 100644 index 0000000..0a9d6e7 --- /dev/null +++ b/src/data/comics/1.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Angry Owl + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ +

+ Monday, Aug 01, 2011

+ Next +
+ +
+
+ 0000-angry_web_1312217558 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/10.html b/src/data/comics/10.html new file mode 100644 index 0000000..b420b58 --- /dev/null +++ b/src/data/comics/10.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: QA Black Magic + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Aug 10, 2011

+ Next +
+ +
+
+ 0003-qa-black-magic_web_web_1312973269 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/11.html b/src/data/comics/11.html new file mode 100644 index 0000000..4c719ca --- /dev/null +++ b/src/data/comics/11.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Dark Intellisense + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Aug 12, 2011

+ Next +
+ +
+
+ 0004-dark-intellisense_web_web_1313141785 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/12.html b/src/data/comics/12.html new file mode 100644 index 0000000..c9a2eaf --- /dev/null +++ b/src/data/comics/12.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Who Takes the Credit? + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, Aug 13, 2011

+ Next +
+ +
+
+ 0005-who-takes-the-credit_web_web_1313244880 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/13.html b/src/data/comics/13.html new file mode 100644 index 0000000..e662355 --- /dev/null +++ b/src/data/comics/13.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Ergonomic Chair + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Aug 15, 2011

+ Next +
+ +
+
+ 0006-ergonomic-chairs_web_web_1313244999 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/14.html b/src/data/comics/14.html new file mode 100644 index 0000000..0403415 --- /dev/null +++ b/src/data/comics/14.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: The Meaningful Deadline + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Thursday, Aug 18, 2011

+ Next +
+ +
+
+ 0007-the-meaningful-deadline_web_web_1313685127 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/15.html b/src/data/comics/15.html new file mode 100644 index 0000000..2c80ca6 --- /dev/null +++ b/src/data/comics/15.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Green Productivity + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Aug 22, 2011

+ Next +
+ +
+
+ 0008-green-productivity_web_web_1314037931 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/16.html b/src/data/comics/16.html new file mode 100644 index 0000000..6f2e0ec --- /dev/null +++ b/src/data/comics/16.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: From Scratch + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Aug 31, 2011

+ Next +
+ +
+
+ 0009-from-scratch_web_web_1314809417 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/17.html b/src/data/comics/17.html new file mode 100644 index 0000000..f24b833 --- /dev/null +++ b/src/data/comics/17.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: A Reward + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Sep 14, 2011

+ Next +
+ +
+
+ 0010-a-reward_web_web_1316015834 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/18.html b/src/data/comics/18.html new file mode 100644 index 0000000..15e0017 --- /dev/null +++ b/src/data/comics/18.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Hard Discipline + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Oct 14, 2011

+ Next +
+ +
+
+ 0011-hard-discipline_web_web_1318625423 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/19.html b/src/data/comics/19.html new file mode 100644 index 0000000..24f1bef --- /dev/null +++ b/src/data/comics/19.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Breaking the NDA + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, Nov 12, 2011

+ Next +
+ +
+
+ 0012-breaking-the-nda-web_web_1321141101 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/2.html b/src/data/comics/2.html new file mode 100644 index 0000000..19aabca --- /dev/null +++ b/src/data/comics/2.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: The Boss and The Worker + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Tuesday, Aug 02, 2011

+ Next +
+ +
+
+ 01-boss_and_the_worker-out_web_1312287061 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/20.html b/src/data/comics/20.html new file mode 100644 index 0000000..3335754 --- /dev/null +++ b/src/data/comics/20.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Thorough NDA + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Tuesday, Nov 15, 2011

+ Next +
+ +
+
+ 0013-thorough-nda-web_web_1321359683 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/21.html b/src/data/comics/21.html new file mode 100644 index 0000000..1898a26 --- /dev/null +++ b/src/data/comics/21.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Santa Courier + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Sunday, Nov 27, 2011

+ Next +
+ +
+
+ 0014-santa-courier-web_web_1322411181 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/22.html b/src/data/comics/22.html new file mode 100644 index 0000000..a595a0a --- /dev/null +++ b/src/data/comics/22.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Friday, Dec 02, 2011 + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Dec 02, 2011

+ Next +
+ +
+
+ 0015-write-it-a-thousand-times-web_web_1322855667 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/23.html b/src/data/comics/23.html new file mode 100644 index 0000000..94a75cf --- /dev/null +++ b/src/data/comics/23.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Touch The Tiles + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Dec 07, 2011

+ Next +
+ +
+
+ 0016-touch-the-tiles-web_web_1323309221 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/24.html b/src/data/comics/24.html new file mode 100644 index 0000000..5f2ee94 --- /dev/null +++ b/src/data/comics/24.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Lazy Evaluation + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Dec 12, 2011

+ Next +
+ +
+
+ 0017-lazy-evaluation-web_web_1323736761 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/25.html b/src/data/comics/25.html new file mode 100644 index 0000000..e3043a6 --- /dev/null +++ b/src/data/comics/25.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Replacement With A Script + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Dec 23, 2011

+ Next +
+ +
+
+ 0018-replacement-with-a-script-web_web_1324658954 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/26.html b/src/data/comics/26.html new file mode 100644 index 0000000..1b8c426 --- /dev/null +++ b/src/data/comics/26.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Human Resources + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Dec 28, 2011

+ Next +
+ +
+
+ 0019-human-resources-web_web_1325082644 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/27.html b/src/data/comics/27.html new file mode 100644 index 0000000..9657ec6 --- /dev/null +++ b/src/data/comics/27.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Nonstop Dev Team + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Thursday, Feb 23, 2012

+ Next +
+ +
+
+ 0020-nonstop-dev-team_web_web_1330007563 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/28.html b/src/data/comics/28.html new file mode 100644 index 0000000..3472563 --- /dev/null +++ b/src/data/comics/28.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: LSD + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Thursday, Apr 26, 2012

+ Next +
+ +
+
+ 0021-lsd_web_web_1335527057 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/29.html b/src/data/comics/29.html new file mode 100644 index 0000000..2d41695 --- /dev/null +++ b/src/data/comics/29.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: The Badge of Shame + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, May 04, 2012

+ Next +
+ +
+
+ 0022-badge-of-shame-web_web_1336135809 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/3.html b/src/data/comics/3.html new file mode 100644 index 0000000..d7b4ac0 --- /dev/null +++ b/src/data/comics/3.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Whole Food Honey + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Aug 03, 2011

+ Next +
+ +
+
+ 03-whole-food-honey-out_web_1312377904 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/30.html b/src/data/comics/30.html new file mode 100644 index 0000000..06b4531 --- /dev/null +++ b/src/data/comics/30.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Bloody Cartridge + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Tuesday, May 08, 2012

+ Next +
+ +
+
+ 0023-bloody-cartridge-web_web_1336498077 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/31.html b/src/data/comics/31.html new file mode 100644 index 0000000..48176ea --- /dev/null +++ b/src/data/comics/31.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: From the Ground Up + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Sunday, May 13, 2012

+ Next +
+ +
+
+ 0024-from-the-ground-up-web_web_1336955366 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/32.html b/src/data/comics/32.html new file mode 100644 index 0000000..c766f0a --- /dev/null +++ b/src/data/comics/32.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Boxed Office + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, May 16, 2012

+ Next +
+ +
+
+ 0025-boxed-office-web_web_1337198604 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/33.html b/src/data/comics/33.html new file mode 100644 index 0000000..4c45a57 --- /dev/null +++ b/src/data/comics/33.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: PET Scanner + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, May 25, 2012

+ Next +
+ +
+
+ 0026-pet-scanner-web_web_1337979080 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/34.html b/src/data/comics/34.html new file mode 100644 index 0000000..4efe412 --- /dev/null +++ b/src/data/comics/34.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Skyscraper + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, May 26, 2012

+ Next +
+ +
+
+ 0027-skyscraper-web_web_1338077520 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/35.html b/src/data/comics/35.html new file mode 100644 index 0000000..d8a41ef --- /dev/null +++ b/src/data/comics/35.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Coin Machine + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, May 30, 2012

+ Next +
+ +
+
+ 0028-coin-machine-web_web_1338424277 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/36.html b/src/data/comics/36.html new file mode 100644 index 0000000..ec90bf7 --- /dev/null +++ b/src/data/comics/36.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Amphetamine Coffee + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Jun 01, 2012

+ Next +
+ +
+
+ 0029-amphetamine-coffee-web_web_1338592639 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/37.html b/src/data/comics/37.html new file mode 100644 index 0000000..adbfc8b --- /dev/null +++ b/src/data/comics/37.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Office Animals + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, Jun 09, 2012

+ Next +
+ +
+
+ 0030-office-animals-web_web_1339281061 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/38.html b/src/data/comics/38.html new file mode 100644 index 0000000..216ae59 --- /dev/null +++ b/src/data/comics/38.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Project Triangle + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Jun 18, 2012

+ Next +
+ +
+
+ 0031-project-triangle-web_web_1340062832 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/39.html b/src/data/comics/39.html new file mode 100644 index 0000000..a3eab78 --- /dev/null +++ b/src/data/comics/39.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Investment Cloud + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Thursday, Jun 28, 2012

+ Next +
+ +
+
+ 0032-investment-cloud-web_web_1340911880 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/4.html b/src/data/comics/4.html new file mode 100644 index 0000000..b270b19 --- /dev/null +++ b/src/data/comics/4.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Bugfixin' + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Thursday, Aug 04, 2011

+ Next +
+ +
+
+ 0007-bugs_web_1312448241 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/40.html b/src/data/comics/40.html new file mode 100644 index 0000000..bcb5a5a --- /dev/null +++ b/src/data/comics/40.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: The Smoker + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Wednesday, Aug 29, 2012

+ Next +
+ +
+
+ 0033-the-smoker-web_web_1346260357 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/41.html b/src/data/comics/41.html new file mode 100644 index 0000000..11aecfe --- /dev/null +++ b/src/data/comics/41.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: The Assassin + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Tuesday, Oct 02, 2012

+ Next +
+ +
+
+ 0034-the-assassin-web_web_1349211995 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/42.html b/src/data/comics/42.html new file mode 100644 index 0000000..58bd7f4 --- /dev/null +++ b/src/data/comics/42.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Extra Dimension + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Nov 12, 2012

+ Next +
+ +
+
+ 0035-extra-dimension-web_web_1352715455 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/43.html b/src/data/comics/43.html new file mode 100644 index 0000000..fd2ef0d --- /dev/null +++ b/src/data/comics/43.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Budget Cuts + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, Dec 01, 2012

+ +
+ +
+
+ 0036-budget-cuts-web_web_1354427969 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/5.html b/src/data/comics/5.html new file mode 100644 index 0000000..9ac3d89 --- /dev/null +++ b/src/data/comics/5.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Food Chain + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Friday, Aug 05, 2011

+ Next +
+ +
+
+ 0008-food-chain_web_1312543561 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/6.html b/src/data/comics/6.html new file mode 100644 index 0000000..809db38 --- /dev/null +++ b/src/data/comics/6.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Mono Development + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Saturday, Aug 06, 2011

+ Next +
+ +
+
+ 0009-mono_web_1312634072 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/7.html b/src/data/comics/7.html new file mode 100644 index 0000000..e0cfc63 --- /dev/null +++ b/src/data/comics/7.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Boss and the Toilet Paper + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Sunday, Aug 07, 2011

+ Next +
+ +
+
+ 0011-a-toilet-paper_web_1312711686 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/8.html b/src/data/comics/8.html new file mode 100644 index 0000000..e68a9c2 --- /dev/null +++ b/src/data/comics/8.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: A Diagram + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Monday, Aug 08, 2011

+ Next +
+ +
+
+ 0001-a-diagram-web_web_1312798348 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/data/comics/9.html b/src/data/comics/9.html new file mode 100644 index 0000000..8c9580a --- /dev/null +++ b/src/data/comics/9.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + +Component Owl's Comics: Dimensionality of an Owl + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + +
+ +
+

Component Owl cares about fun too. Behold, the truth-inspired web + comics for puny human developers!

+
+ +
+ Previous +

+ Tuesday, Aug 09, 2011

+ Next +
+ +
+
+ 0002-owl-dimensionality-web_web_1312882080 +
+
+ +
+
+
+ + + + + + + +
+
+ + + +

+ All these comics strips are drawn by our lead Better ListView developer + Libor Tinka. He is either restlessly crafting the perfect code, drinking + green Japanese tea, or drawing hilarious comics. +

+ If you like this comics, please share it with your friends! +

+ +
+
+ Better ListView +
+
Better ListView: .NET ListView control for WinForms (C#, VB.NET)
+ Download + More Info +
+
+
+ + + + + + + +
+
+
+ + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/public/download/better-listview.html b/src/data/download/better-listview.html similarity index 100% rename from public/download/better-listview.html rename to src/data/download/better-listview.html diff --git a/public/quick-start-guide/better-listview/index.html b/src/data/quick-start-guide/better-listview/index.html similarity index 100% rename from public/quick-start-guide/better-listview/index.html rename to src/data/quick-start-guide/better-listview/index.html diff --git a/src/pages/articles/[slug].astro b/src/pages/articles/[slug].astro new file mode 100644 index 0000000..e783103 --- /dev/null +++ b/src/pages/articles/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/articles'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Articles'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/better-listview-express/[slug].astro b/src/pages/better-listview-express/[slug].astro new file mode 100644 index 0000000..be97175 --- /dev/null +++ b/src/pages/better-listview-express/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/better-listview-express'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Better ListView Express'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/better-listview/[slug].astro b/src/pages/better-listview/[slug].astro new file mode 100644 index 0000000..731bc26 --- /dev/null +++ b/src/pages/better-listview/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/better-listview'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Better ListView'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/better-splitbutton/[slug].astro b/src/pages/better-splitbutton/[slug].astro new file mode 100644 index 0000000..40df064 --- /dev/null +++ b/src/pages/better-splitbutton/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/better-splitbutton'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Better SplitButton'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/better-thumbnail-browser/[slug].astro b/src/pages/better-thumbnail-browser/[slug].astro new file mode 100644 index 0000000..38724eb --- /dev/null +++ b/src/pages/better-thumbnail-browser/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/better-thumbnail-browser'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Better Thumbnail Browser'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro new file mode 100644 index 0000000..f14265b --- /dev/null +++ b/src/pages/blog/[...slug].astro @@ -0,0 +1,95 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + function getAllHtmlFiles(dir) { + let results = []; + if (!fs.existsSync(dir)) return results; + const entries = fs.readdirSync(dir, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + if (entry.isDirectory()) { + results = results.concat(getAllHtmlFiles(fullPath)); + } else if (entry.name.endsWith('.html')) { + results.push(fullPath); + } + } + return results; + } + + const dataDir = path.join(process.cwd(), 'src/data/blog'); + const files = getAllHtmlFiles(dataDir); + + return files.map(file => { + const relative = file.replace(dataDir + '/', ''); + + let slug; + + if (relative.includes('?')) { + // URL-encode the ? to %3F for the slug + slug = relative.replace('.html', '').replace(/\?/g, '%3F'); + } else if (relative.endsWith('/index.html') || relative === 'index.html') { + slug = relative.replace(/\/?index\.html$/, ''); + } else { + slug = relative.replace('.html', ''); + } + + return { + params: { slug: slug || undefined }, + props: { filePath: file } + }; + }); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); + +// Extract title +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1].replace(/&/g, '&').replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>').replace(/«/g, '«').replace(/»/g, '»') : 'Blog'; + +// Extract meta description +const descMatch = html.match(/<meta\s+name="description"\s+content="([^"]*)"/i); +const description = descMatch ? descMatch[1] : ''; + +// Extract content - try to get the main content area +let content = html; + +// Try to extract just the body content +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { + const bodyTagEnd = content.indexOf('>', bodyStart); + content = content.substring(bodyTagEnd + 1); +} +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { + content = content.substring(0, bodyEnd); +} + +// Remove the d-page wrapper's header (navigation) - we use Base.astro's header +const headerEnd = content.indexOf('</div><!-- d-header -->'); +if (headerEnd > 0) { + content = content.substring(headerEnd + 22); +} + +// Try to extract d-content-wrap or d-main +const contentWrapStart = content.indexOf('class="d-content-wrap"'); +if (contentWrapStart > 0) { + const tagStart = content.lastIndexOf('<div', contentWrapStart); + content = content.substring(tagStart); + const footerStart = content.indexOf('<div class="d-footer">'); + if (footerStart > 0) content = content.substring(0, footerStart); + const pageEnd = content.lastIndexOf('</div><!-- d-page -->'); + if (pageEnd > 0) content = content.substring(0, pageEnd); +} + +// Remove any remaining script tags that reference old WordPress paths +content = content.replace(/<script[^>]*src="[^"]*wp-includes[^"]*"[^>]*><\/script>/gi, ''); +content = content.replace(/<script[^>]*src="[^"]*wp-content[^"]*"[^>]*><\/script>/gi, ''); +content = content.replace(/<script[^>]*src="[^"]*wp-embed[^"]*"[^>]*><\/script>/gi, ''); +--- +<Base title={title} description={description}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/comics/[slug].astro b/src/pages/comics/[slug].astro new file mode 100644 index 0000000..08e67b5 --- /dev/null +++ b/src/pages/comics/[slug].astro @@ -0,0 +1,58 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/comics'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + + return files.map(file => { + const slug = file.replace('.html', ''); + return { + params: { slug }, + props: { filePath: path.join(dataDir, file) } + }; + }); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); + +// Extract title +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1].replace(/&/g, '&').replace(/'/g, "'") : 'Comics'; + +// Extract meta description +const descMatch = html.match(/<meta\s+name="description"\s+content="([^"]*)"/i); +const description = descMatch ? descMatch[1] : ''; + +// Extract body content +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { + const bodyTagEnd = content.indexOf('>', bodyStart); + content = content.substring(bodyTagEnd + 1); +} +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { + content = content.substring(0, bodyEnd); +} + +// Try to extract d-content-wrap +const contentWrapStart = content.indexOf('class="d-content-wrap"'); +if (contentWrapStart > 0) { + const tagStart = content.lastIndexOf('<div', contentWrapStart); + content = content.substring(tagStart); + const footerStart = content.indexOf('<div class="d-footer">'); + if (footerStart > 0) content = content.substring(0, footerStart); +} + +// Clean up old script references +content = content.replace(/<script[^>]*src="[^"]*dextronet[^"]*"[^>]*><\/script>/gi, ''); +content = content.replace(/<script[^>]*src="[^"]*plugins[^"]*"[^>]*><\/script>/gi, ''); +--- +<Base title={title} description={description}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/download/[slug].astro b/src/pages/download/[slug].astro new file mode 100644 index 0000000..86e6124 --- /dev/null +++ b/src/pages/download/[slug].astro @@ -0,0 +1,34 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +export function getStaticPaths() { + const dataDir = path.join(process.cwd(), 'src/data/download'); + if (!fs.existsSync(dataDir)) return []; + const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html')); + return files.map(file => ({ + params: { slug: file.replace('.html', '') }, + props: { filePath: path.join(dataDir, file) } + })); +} + +const { filePath } = Astro.props; +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Download'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base> diff --git a/src/pages/quick-start-guide/better-listview.astro b/src/pages/quick-start-guide/better-listview.astro new file mode 100644 index 0000000..6be04cc --- /dev/null +++ b/src/pages/quick-start-guide/better-listview.astro @@ -0,0 +1,24 @@ +--- +import Base from '../../layouts/Base.astro'; +import fs from 'node:fs'; +import path from 'node:path'; + +const filePath = path.join(process.cwd(), 'src/data/quick-start-guide/better-listview/index.html'); +const html = fs.readFileSync(filePath, 'utf-8'); +const titleMatch = html.match(/<title>([^<]+)<\/title>/i); +const title = titleMatch ? titleMatch[1] : 'Quick Start Guide - Better ListView'; +let content = html; +const bodyStart = content.indexOf('<body'); +if (bodyStart > 0) { content = content.substring(content.indexOf('>', bodyStart) + 1); } +const bodyEnd = content.indexOf('</body>'); +if (bodyEnd > 0) { content = content.substring(0, bodyEnd); } +const cw = content.indexOf('class="d-content-wrap"'); +if (cw > 0) { + content = content.substring(content.lastIndexOf('<div', cw)); + const ft = content.indexOf('<div class="d-footer">'); + if (ft > 0) content = content.substring(0, ft); +} +--- +<Base title={title}> + <Fragment set:html={content} /> +</Base>