Hacker News new | past | comments | ask | show | jobs | submit login
The Over-Engaged Knowledge Worker (ianbicking.org)
153 points by joeyespo on Feb 3, 2019 | hide | past | favorite | 66 comments

>This is the reality of knowledge work that none of these conceptualizations address: it’s hard (in very specific ways), some of it we don’t want to do, and the work we don’t want to do piles up and becomes dominant simply because it remains undone.

Let me rephrase this for you. A lot of so-called "knowledge work" is just tedious, mind-numbing bullshit. Not only that, but you have to plow through it while fighting information overflow and your own overly complex tools, while acting completely alone. There are no librarians on the Internet.

No wonder everyone craves distractions.

>In the context of the browser, how do we contextualize pages and interactions inside some abstract task?

This train has sailed off its tracks long time ago.

Browsers aren't real tools. They are designed to make for smooth information consumption so that Google and co can harvest your money and attention as efficiently as possible.

I can list several hundred things a web browser should do if it aims at being "knowledge worker's tool". Let me just give some categories:

1. Features for pausing and restarting work in different mental contexts. 2. Local personalization. Shit like Timelines should be local and user-controller. "This is too complicated, so let's let Facebook/Twitter/Microsoft do it" is a lame excuse. 3. Did you notice that browsers still don't have any good authoring tools? Every websites reinvents their own WYSIWYG. "Developer tools" have everything for debugging, but almost nothing for creations of stuff. 4. User-driven integration between pages. (For example, something as simple as "when I open this page, go to that other page, find all the entries with word X and paste it here".)

Bah, that's enough. I can continue, but I think the point was made, unless the reader doesn't want to see it on purpose.

"Browsers aren't real tools." oh yes they are you probably haven't worked pre browser based systems.

eg just before I switched to the web in 1995 I worked on an oracle forms system.

To deploy a pilot system to 5 seats the Other developer and I went to Liverpool and spent 2 day setting up those 5 people - this required feeding 15 or 16 floppy disks in the right order to install the oracle forms product.

As I said to my boss after the project was done imagine the savings if your rolling this out to 500 people and you could use the existing browser.

That has nothing to do with knowledge work; the core solution in your example isn't even the browser, or the WWW - it's the Internet in general, which allows a company to avoid the logistics of shipping software on an actual (air)ship. You could achieve the same with an FTP client. Using a browser as a runtime for your application has its own benefits and drawbacks, but that's another topic.

GP's point is that browsers ain't real tools for working with knowledge. I wholeheartedly agree. Today's browsers are complicated application runtimes that allow vendors to serve content however they wish. Vendors of Internet services have their own goals, of which helping the user is one of the least important. That's why UX on the web is one of horrible inefficiency and near-zero interoperability. A proper tool for knowledge worker need to support end-user customization and end-user control over content as first-class concern.

Browsers aren't real tools. They are designed to make for smooth information consumption

Well yeah. They're browsers, that's what they are. "To browse: an act of casual looking or reading."

They're not really browsers - they're web page viewers.

The views are organised by the needs of the source technology - "pages" generated by a web server - not by the needs of the user.

A lot of useful features - cross-referencing, comparisons, task-based content searches, dynamic content update notifications - are either impossible or poorly implemented on the server side.

There's never been an active browser that tries to integrate information instead of being a dumb page viewer with tabs and some form filling options.

Early on, the Web was imagined to have a plethora of "agents" (bots) which act on behalf of their users, extracting information from pages, following links, aggregating the relevant data, etc.

This worked really well for search engines, but certain economic incentives crept in which pretty much killed off this idea. In particular:

- Many sites gained revenue by advertising

- Advertising only really works if a human is viewing it (it's possible to integrate advertising into the data, with product placement, "native advertising", etc. but that's more expensive than slapping some Javascript in some iframes)

- Exposing data publically in easily parsed formats will mostly stop humans from viewing the page. Hence so much data is now in silos.

- Exposing services, like search, to bots can get expensive. Hence the rise of API keys.

There are other reasons too, like scraping being hard and fragile due to styling having too much influence over markup (CSS helped a little; a more radical attempt was sending raw XML and creating the page via XSLT). The rise of Javascript-only sites, and the difficulty of implementing all of the many JS APIs that a site might try to use, has also hindered alternative user agents.

The end result is the Web being dominated by a handful of user agents: a few search crawlers and a few user-facing browsers :(

> A lot of useful features - cross-referencing, comparisons, task-based content searches, dynamic content update notifications - are either impossible or poorly implemented on the server side.

Dynamic content update notification is a solved problem - how many sites ask you daily to enable notifications? It's an issue of will, not way. As for others - those are really client-side concerns, they should be implemented in the user agent (i.e. browser).

> There's never been an active browser that tries to integrate information instead of being a dumb page viewer with tabs and some form filling options.

Agreed there never have been (to my knowledge) an active browser that's fully suitable for knowledge work. That said, the few features there were supporting, to paraphrase Pólya, the intelligent reader, have over time been diminished or removed from the browsers. For instance, both RSS feeds and user-styling used to be first-class features of browsers; both are now either invisible or gone.

To be fair, every time someone tries to advance in the way of an integrated information tool, it gets a lot of backlash at tech sites from people saying that "a browser should be a browser and just show me the pages, nothing else".

Not that everybody feels that way, but those people get vocal.

Then we need to create the category of builders as the base tool for web work, and relegate browsers to a secondary role.

What would (1) look like?

Could someone more familiar with the subject and vernacular provide some sort of summary of what this is trying to say? I've read it two or three times and I still can't work out the point being made.

If any.

So to me it made some sense. Putting it in my own terms, he argues knowledge workers are _by default_ overloaded and they use distractions as a necessary form of relief from the pressure - the distractions aren't the problem, they're a symptom. Right now we're too focused on tools and strategies to make us "more efficient", block distractions and promote collaboration. Instead we should focus on reducing the mental drain of knowledge work (e.g. the need for endless multi-tasking and alt-tabbing), find ways for positive mental relaxation (here I guess implied is NOT drugs or alcohol) and support getting "back on track" e.g. if you finish the day half way through fixing a bug, when you start next day, it's not just your IDE but also say your browser with all the Stack Overflow tabs and such you had open, related to the bug, all together in a "session" that makes it as easy as possible to pick up where you left off.

So in summary I guess he's saying in the search for solutions to burnt out knowledge workers we're focused too much on symptoms like distractions.

Minimizing context switches has been my angle after I burnt out. I automate things that take me out of context and use every last feature of my IDE to make sure I don't have to alt tab all over the place. Terminal, database, docs and code is all in my IDE. It feels more like sitting down at a specialized workstation than a general computer and it keeps me focussed and in flow. Not only is that a less stressful state of mind to work from, it also means I ultimately spend less time in work mode and I can cleanly delineate work from not-work.

I minimise the impact of unexpected context switches by keeping a running log what I am doing or should do next in a document for each project. It might seem like a waste of time but I can safely mentally let the whole current context go when I am interrupted for an urgent job and I don't have to keep a stack of contexts in my head at once. It is especially useful in getting back up to speed in a context that had to be ignored for a week or more.

Engineering logbooks are a great idea (and electronic/mechanical engineers have been doing it for a while - because it works!).

I use a spiralbound notebook and a fountain pen for mine, because I find the change of tools helps me to think about the project I'm logging on a meta level. I tried doing it in a textfile and it didn't work so well for me, but people are different.

I've been doing this for the last few months and it really helps. In my case it's a set of OneNote grouped tabs for each story/project/etc that I'm working on. I have tabs for re-creating, background, ways to setup the environment for the task at hand, links to things that are helpful, etc.

I use the same practice and it greatly aids in reducing the congnitive energy required for context switching etc.

As someone who’s juggling 5-8 projects on any given week: this is a great idea, thanks!

I'm moving towards an approach of batch processing more things. What this means in practice is that more of my tasks use limited interactivity - e.g. "draft and redraft" vs "draft and edit". This has the effect of the "yes and" in improv, where I make errors but have to keep going regardless. Working within that mode also means that I can activate on a reflexive, pre-flow state level where I flex the project-management muscles, not the problem-solving muscles. Flow means I am challenging myself, and with so many years of experience, challenging myself means that I am overcomplicating it.

As well, I'm more likely to treat looking up docs as a research project where I copy relevant snippets of the text into one place for easier reference.

I'm still unhappy with a lot of aspects of how I code, but most of it isn't on the end of the day-to-day editing, but rather things like, "oh, I switched languages again - time to relearn the string library".

That id an interesting take on flow meaning you are overcomplicating things. That explains what was happening to me pretty well I think. I was too bored to reach a state of flow but if it were more challenging I would have been re-inventing something. I have switched domain since I burnt out which is perhaps why I can now find new challenges and be able to reach flow.

As someone who works in healthcare and has to juggle quite a bit of technical info on quite a few different active individual patients and who has also read other poster's responses above, I'm kinda taken aback that there is such a lack of higher level organization going on. Is it just something that isn't taught or that is but people just don't want or like to do?

I can only speak for software, but as an industry it doesn't have any clear framework of process at an individuals level. It's all very much left to the individual on how they organise themselves, and a lot of people (including me) never got the memo that it's something you should think about or else there can be consequences (like burn out, inefficiency). Just generally speaking the software industry is a melting pot of loose ideals when it comes to actually working. There are no regulations, no unions, no standard tooling, hell sometimes we make our own tools, set our own hours, move our own goalposts.

I think that's why software companies are often approached with quite a bit of caution by other businesses. It's not like hiring an engineering firm, where you can be pretty certain you'll get an industry standardized result.

I do similar but on OS level - I keep separate virtual machine for each project/customer and when I finish a work day I just save its state to disk to resume it intact on another one. I use Ansible to bootstrap them and each one has different color theme for an easier mental switch.

Also my host OS is my private leasure time system and of course that causes some distractions during the work day - pay bills, read about some new music band or movie.

Now I am contemplating about stripping host OS from all easy reach distractions (browser, email, side-projects) and creating dedicated private time VM.

I too am trying to sort through the fallout from endless context-switching. I wrote something (ranted) about it here. Shameless plug since it seems relevant:


I do the same thing with studying at Uni. Having all my articles, notes, syllabi and seminar instructions in scrivener has been really effective as it means I simply open up the app I full screen and start working. Scriveners split screen layout is a life saver as it means I can take notes in a text doc while reading the article at the same time.

> every last feature of my IDE to make sure I don't have to alt tab all over the place. Terminal, database, docs and code is all in my IDE

Which IDE is this?

Let me introduce you to the song of the Emacs People.

Could be, but the features he lists are also all available in Intellij (I know because I use all of them and Intellij in the same way as he describes).

Must be. Emacs is way too large for OP to "use every last feature" of it.

Yep it's IntelliJ. Although I don't even use every last feature of the IntelliJ platform, I just try very hard to find and use features in the IDE rather than a mix of external tools. With a terminal inside the IDE, there's not really anything I would need outside the IDE window.

Can chrome or Firefox do an "exit but save all my tabs"? I find myself force closing Chrome because I can use the recover tabs when I come back.

If you close Chrome normally and on reopening attempt to undo closing a tab (Ctrl-Shift-t on Windows) it will reopen all the closed, and even separate windows with their own tabs (maybe that takes a second Ctrl-Alt-t, I can't recall).

Firefox just opens with all the same tabs by default (at least it does for me. I don't recall if it's a setting I selected).

Firefox just opens with all the same tabs by default (at least it does for me. I don't recall if it's a setting I selected).

It's a setting. In your preferences, under start-up, check restore previous session. IIRC, you can also restore the previous session from the history menu even if you don't have that option checked.

Yes, both have a setting for that. You can find it in preferences under default pages to open upon startup. It'll leave you where you left off if you quit.

Likewise, Chrome in particular will also allow you to recover closed tabs if you accidentally close the window. I'm not sure if Firefox has the setting but I would assume it does.

Firefox has the same capability, with the same key-combo to do so (on Windows, at least, where it's Ctrl-Alt-t).

I personally use this, which also does what you want:


Also, on the subject, it helps me by being able to store a window, or a group of windows for later. And when I've opened a bunch of tabs for a specific task, I can easily pop them out into a separate window to focus on them, or to have less distraction when showing stuff to a colleague.

I've used this plugin for years and it's been great.

Usually I want all tabs to be closed when closing Firefox. Sometimes though I don't, and then I do ctrl+alt+esc and click onto Firefox. Works in X11 at least. It will kill the process and the next time Firefox starts it'll recover the closed tabs because it thought it crashed or something.

I just do `killall firefox` in the shell. On the next start, you'll get a session restore page.

I learned to treat browsers like this because of Chrome, actually, and its resident processes that still eat my RAM even after I close all browser windows.

I use an extension called "onetab"[0] that saves (and closes) all my tabs in one click.

[0] https://www.one-tab.com/

Chrome is easy. Just hit X to close it normally, and then on re-launching:

menu -> history -> recently closed -> XX tabs

It will open all the tabs you had going when you closed.

Unless incognito mode was used.

You can do "restore previous session" from the hamburger menu the next time you start up, even if you don't force close.

When people discuss “knowledge work”, they often slip into imagining an “idealized” knowledge worker: one who is very engaged, and doing “big” meaningful things one at a time.

In reality, (1) we are all distracted, (2) our work usually consists of a large number of small chunks that are spread over time (3) we all have a large pile of undone work (both “job” and “personal”) that we're always feeling guilty about.

What do we do about this difference between the ideal and reality? We could just give up on the ideal and resign to the reality — or even make it worse. Or we could try to fight it superficially, and fail (there's a reason things are the way they are). Or we could start from accepting the reality (instead of ignoring it), but try to move towards the ideal, e.g: (1) reduce whatever it is that makes us seek distractions (very different from blocking distractions), (2) make it easier to get back on track (e.g. keep track of the task being done).

In coming up with this problem statement, the author believes he's diverged from the usual problems being imagined: things like trying to block distractions, trying to maximize efficiency, “collaboration”.

[That just restated the post, so I don't know if it helps :)]

> who is very engaged, and doing “big” meaningful things one at a time.

And one who knows exactly what steps are going to be involved and how long each one is going to take, weeks or even months in advance. The fact that I approach every new programming problem with: "ok, how the hell do I figure this one out?" made me feel really nervous early on in my career, since there seemed to be this default expectation that not just good, not even just adequate, but even mediocre programmers could blurt out a list of the tasks involved in solving a problem, "estimate" (meaning predict with +/- 5% accuracy) the hours associated with each and then robotically plow through each of them. This was back in the 90's, before somebody named this "agile" and built a set of Orwellian tools and "coaching strategies" around it, but after a few years I couldn't help but notice that, in spite of being an abject failure at accurately predicting how long each bug fix was going to take before I even really knew what it entailed, I was also one of the most sought after developers in every organization I worked at.

A brilliant précis that is actually better than the original article (sorry Mr Bicking)

I have an idea for your (2), which is a tool for interrupting you when you are procrastinating, and showing something interesting to do from your TO DO list, adequate to the current moment and place.

This could use all the addictiveness techniques of current "engagement+advertising" platforms and turn it to good use.

What I'm getting out of it is that idealized notions of "knowledge sharing" and "task management" are unrealistic compared to how people actually work on things in the real world, and that software meant to help people work on long-running tasks should take that into consideration.

As a concrete example: I frequently find myself needing to figure out how to implement some software task I've never done before myself, involving concepts that I barely know anything about. This usually results in dozens of opened tabs in multiple subtrees - Google searches, Github repos, and so on. This might overflow my main "browsing" Firefox window, so I end up opening a second FF window just to hold those tabs. Per the article, maybe there's a better way to capture the notion of "I'm trying to research this topic over the course of a week - how do I better organize what I'm working on, and perhaps share that info with others?".

Your concrete example is the main reason I've switched from Firefox to Vivaldi. You can create either "tab stacks", which group multiple tabs into a single top-level tab, and which can even be unloaded all at once. If you want a more persistent (and I think even shareable) version, you can then save the group as a session.

Sometimes I worry that I present my thoughts as incoherently as the author. This article needs to be streamlined and stripped of the confusing snark halfway though.

Maybe I'm just ignorant, but this article reads like one of those corporate jargon text generators to me.

I'm pretty lost too. It reads like the second half of an article with no context.

The article is a stream-of-consciousness about distractions and multitasking. The author does not reach a conclusion, instead hoping only to inspire further thought.

"Tasks which require thought are exhausting and qualitatively different from routine tasks. Is there a better way to coordinate the work environment of "knowledge workers" to make their lives easier?"

Same reaction, there’s a point buried extremely deep in all of the stream of consciousness

Most people who uovoted would know but others may not. Ian Bicking is creator of virtualenv (and others) and one of the people doing meta thinking of tools and envs in the python world. Interesting to see something from him after some years.

I'm so connected yet so disconnected with my inner self. Knowledge workers are under appreciated in the regular day job. If you also happen to be creative then you'll be challenged by some other ego trying to take credit for your work. In the struggle and dilemma: "should I care about this guy?" you forget about it and start to build resent. Then burnout is then a fact. Your challenges in college were way more benefitting and purpose-driven instead of your boss's wallet. That's why I say CS degree was awesome, working as dev is draining.

What's this comment about? Just need a rant...

I guess it also depends on where you work. You can do some pretty amazing and creative work if you find the right niche to work in.

true that! yet to find...maybe I move into hardware, something tangible is inspiring

The problem statement is eloquently stated. Yet the blame is nonsensical. The developers of Solitaire are to blame? Solitaire was a non-trivial application written for the express purpose of selling an operating system.

The reality is that the problem statement, that knowledge workers are constantly engaged with unproductive, nonsensical asks, is true. Knowledge workers must overcome this by being exactly the worker they've been advised not to be: ignoring emails and chats, not being present at their open-plan desks, declining any meeting that won't immediately please their manager.

No sinister force is the cause of these problems; simple entropy of organizations is to blame: failing to allocate resources to document and streamline processes is to blame.

In order to minimize context-switching and mantain browser "sessions" I recommend OneTab[0], really simple idea but is really useful.


>So how might we approach idea generation around knowledge work without idealizing the knowledge worker?

Editing tip: you can delete sentences like this without loosing much. The following text should do a good enough job of making a point without an introduction helping it along. The trick to editing is to backspace as many words as you can.

What’s wrong with an introductory question?

Also, losing not loosing.

It’s conversational, and adds nothing: the reader who was following along already asked themselves that question, and the reader who’s hasn’t latched onto the thesis doesn’t understand why this is a good question to ask.

Claudius : Can you advise me?

Laertes : I am lost in it, my lord.

a friend sending you a mortgage refinance proposal isn't work though, unless that friend is giving you money for looking at it. And I guess the only people getting sent mortgage refinance proposals are people who might have some expertise in that subject.

This website is beautiful.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact