
The non-linearity of productivity - wslh
http://blog.kenperlin.com/?p=18993
======
lordnacho
There's feeling like you're getting things done because you're on a coding
roll, and then there's feeling like you're getting very little done because
you're still organising the project in your mind.

I don't think the two can be separated. Being stuck and being moving are
dependent on each other.

A lot of the time I'm frustrated because I haven't quite figured out how the
code should look. It takes a long time, a lot of chopping and changing, before
you come upon a structure that you feel comfortable building on.

When you do get to that point though, it feels easy. Everything you write
makes sense in terms of your new structure, and there aren't so many awkward
kludges. The only thing is this period can be brief, because when you're fast,
you get to the next problem sooner. You'll find higher and higher levels at
which to view your code, and at each level you'll need to do some organising.

~~~
dasmoth
Agreed. And I'm increasingly tending to think that the stuck-thinking-about-
the-tricky-stuff phase is the part of the game I find most satisfying.

A lot of textbook management techniques seem hellbent on trying to force
steady productivity instead of punctuated equilibrium. Not the recipe for a
satisfying environment.

~~~
GuiA
I once had a manager ask me to email him a progress report every day; and
every hour or two, he'd make a point of interrupting me to ask me "so how's
<current_task> going?"

Sounds like something straight of office space, but that was my life for a
while. Least productive job I've ever had because of that (well, and the
myriad other little toxic/passive aggressive behaviors he had).

He had a Stanford MBA too, which convinced me of how useless MBAs must be.
Because if you make it through one of the top programs in "business
administration" in the world and still manage like that, you might as well
have an MD from Harvard and still believe bloodletting is a viable treatment
for illnesses.

~~~
dasmoth
_I once had a manager ask me to email him a progress report every day;_

This seems to have become very nearly normalised in the guise of daily stand
ups. Some would argue it's less intrusive if it's for "the team" rather than
for an individual manager, but I'm not convinced myself.

 _and every hour or two, he 'd make a point of interrupting me to ask me "so
how's <current_task> going?"_

Similarly, in environments where tasks are getting broken down into tickets
that are only expected to take a few hours, there's a similar level of
oversight (although hopefully a bit less disruptive than hourly shoulder-taps,
I agree).

~~~
everyone
I worked for a startup that grew up around me. We started without any project
managers and such and they got introduced as the team grew and grew. I would
just make tasks like "figure out how to do X", "look into this framework Y",
"write a really good SO post for the bug we came across in library Z" . Worked
fine, tho the PM for my project was sound.

------
rm999
For me, productivity is 90% about existing in a time and place without
blockers. You can have all the right ideas (and even the least productive
people I know are full of great ideas) but a single blocker can take your
productivity from 100 to 0 indefinitely.

* For programming, this can be knowing a language very well, having smart coworkers who can help with issues, and a plan of how your software will look in the end.

* For getting in shape it can be living near your gym and going to bed at 10:30 instead of 11.

* For writing it can be about turning off message notifications and keeping an outline to prevent writer's block (honestly I'm still working on this one).

I can go on, but this realization has been tremendously useful to me, and lets
me exist in "10x productivity mode" many times longer than in the past. While
I don't agree with his politics, I strongly believe Scott Adams' ideas around
systems vs goals is the right way of thinking of life. You shouldn't expend
energy achieving specific goals, you should set your life up so it takes
minimal effort to be productive and live a good life.
[http://blog.dilbert.com/post/102964992706/goals-vs-
systems](http://blog.dilbert.com/post/102964992706/goals-vs-systems)

~~~
fapjacks
Incidentally, have you seen Scott Adams' girlfriend? He's definitely doing
_something_ right.

------
LeonM
I've struggled with this question lately. However, I think our definition of
'productivity' needs more refinement.

Currently I'm working on a new startup which tries to tackle a rather hard
problem (a generic document parser for invoices). Sometimes I'm stuck for days
on a particular problem, and I feel like I'm not productive at all, I just
stare at a blinking cursor all day. However, in my head I'm constantly working
on the problem, and one could say that the moments where I don't write code
are actually the most productive, even though it does not feel that way. It's
rather counter intuitive.

So I don't think there really isn't a pattern in actual productivity (at least
not in my case), although there might be a pattern in how productive you feel.

~~~
foxhop
Wouldn't it be cool if invoices had a spec (xml or json) with specific fields
that had specific meaning and then we could use something like CSS to make
them "pretty" and branded.

This would save from having to parse anything.

To create a bill-of-materials you simply would attach a bunch of invoices from
a bunch of vendors. There are jobs out there of people who fetch invoices and
then transform them into in-house systems all manually.

~~~
LeonM
This XML spec does exist, it's called UBL. However adoption of this is slow
and still quite uncertain. As always, many companies try to make money by
creating their own flavour and trying to license it (unfortunate with success)
and of course all these competing standards are not compatible with each
other.

Since digital bookkeeping is ubiquitous nowadays, one could argue that
invoicing is simply about sharing digital transactions between systems, and
should not need to be 'pretty' or human readable at all.

I'm trying to bridge this gap, and I know that given enough time, my service
will become obsolete.

But I'm goign higly off-topic now ;-)

~~~
tonyedgecombe
"my service will become obsolete"

I don't think you need to worry for a long time.

------
mswen
I notice the ebb and flow of productivity as well. Ken uses the term fallow
period. I like the reproduction analogy. New ideas, skills, or domain
knowledge are like the sperm that finds its place in the egg which I think of
as the existing stable but receptive body of knowledge and skills.

There is often excitement at the beginning "I have this new skill!" However,
the new skill or knowledge hasn't really integrated with the existing body of
knowledge yet. Then often it seems that there needs to be a gestation period.
You have the sense that connections are forming and something new is forming
that is the combination of the new and the old.

And, then it feels like I am ready to pour it out. Whether it is writing an
article, preparing a speech or coding up that feature or application. When
that happens it feels like the "Flow." But I understand that the gestation
period was just as important if much less visible and seemingly unproductive.

------
YZF
Just feeling productive doesn't mean you are productive and conversely not
feeling productive doesn't mean you are not productive. How do you measure a
software developer's productivity? It's very difficult. Reducing the build
time might not seem very "productive" but the value it produces over a long
time might be higher than any feature or clever code you'd write at this
moment.

You can feel like you're producing great code but the proof is in the pudding.
It might all need to be thrown away and rewritten.

Value also depends on other factors. Maybe if you spent more time with the
junior in the next cube to ensure his piece turns out good the product would
actually be successful. You wrote all that good code and the project was
cancelled, what was your real productivity?

I go through periods where I don't feel like doing anything and then I go
through periods where I have a burning desire to build stuff. Different ideas
are in different phases in my mind, some are in long term hibernation, some
are ready to execute.

EDIT: I know people who create a lot of code. Even good code. The problem is
sometimes we didn't actually need that code at all. Very smart people, wrote a
ton of good code, with no leverage. So step #1 in being "productive" is
knowing where to put your efforts. I say software engineering is all about
leverage, when you have leverage a little bit of code will move the world.
With no leverage you can write all the code you want.

~~~
Inityx
I think there's even another layer that goes with writing code that gets
thrown away. Sometimes I end up doing that, but through that I gain knowledge
of the problem that I probably couldn't have effectively gained any other way.
Should that time spent still be labeled "unproductive"?

~~~
YZF
Maybe you could have gained the knowledge in other ways? It's hard to tell.
It's possible this was absolutely necessary. It's possible a chat with another
engineer would have allowed you to get on the right path right away. Who
knows.

------
erikpukinskis
Lately it's been important for me to think of myself like an elextric motor,
two modes:

DRIVE - electrons in, mechanical energy out

REGEN - mechanical energy in, electrons out

Except in your brain it's a little harder to label the i/o... it's something
like

CONTROL - cortical activation in, perceptual changes in the world out

SUBMISSION - percepts from the world in, cortical activation out

Just like a vehicle, you stop functioning if you stay too much in one mode or
the other. And ironically, I find I achieve maximum control when I cycle back
and forth in even measure.

As for long term projects, I find I need to do this cycling at all time
scales. Hour, day, week, month, year. It's the cycling back and forth that
flushes out nonsense and keeps your finger on a degree of incontrovertible
reality.

The trouble is, I often lose track of where I am supposed to be in all these
cycles. I am working on software to try to help. Encourage some harmonics.

------
lohankin
while in the "Zone", you lose the ability to reflect on the things you are
writing - long trip often results in complete bullshit. Which you can discover
only upon waking up. Then you get stunned and paralyzed. Sometimes it's a good
idea to just throw away the whole thing and start from scratch. I found
experimentally that it's good idea to set time limits for your "productivity
periods", and keep them rather short.

------
lisper
Everything is easy once you know how. So everything you do breaks down into
two phases: learning how, and doing it. During the first phase you feel very
unproductive because there are no externally visible results and during the
second phase you feel very productive because there are.

------
jpster
I've also been digging into its non-linearity, getting a lot out of this book
at the moment: [https://www.amazon.com/Peak-Performance-Elevate-Burnout-
Scie...](https://www.amazon.com/Peak-Performance-Elevate-Burnout-
Science/dp/162336793X)

~~~
flanbiscuit
I'm curious about this book. Can you give me one small example of something in
this book that helped you?

~~~
jpster
Sure. It suggests a way to reframe how I think about stress. Not as something
harmful to be minimized, but as something that I should intentionally
cultivate through activities that are a progression of just-manageable
challenges in my chosen endeavor. With each challenge immediately followed by
a period of rest that's designed and experienced with just as much intention.

------
dwaltrip
I think that the "feelings of being or not being productive" are often fairly
disconnected from the actual levels of productivity.

I do agree that productivity itself exhibits complex patterns, especially with
relation to time. These patterns can vary significantly from person to person
and over time, though.

I've had inklings of some of own trends for some time now, but it's still
pretty fuzzy. I expect to slowly learn more through patient, dispassionate
self-observation over the coming years and decades, to the best of my ability.
It's tricky stuff, but very interesting.

------
MichaelBurge
Productivity is mostly linear for me, judging from non-test lines of code in
my commit history. About 36 net lines/hour whether the language is Haskell,
C++, or Javascript, or whether it's 3 hours or 14.

There is some variance: Test code increases the ratio, UI code increases the
ratio, and debugging lowers the ratio. But it's either wildly off being one of
these, or 36-40 lines/hour.

~~~
nuclx
N lines/hours is a useless metric unless you strictly only do coding to the
spec in greenfield projects. E.g. compare using a code generator producing 20k
LOC in a millisecond with modifying an undocumented legacy system, where every
slight change to the system's incoherent logic might blow up the hole thing.

~~~
YZF
It's a useless metric in any project. A million line code base can have a lot
of value or negative value. If you wrote that at 10 lines/hour your
productivity is anything between -X$/hour and +Z$/hour. What does productivity
mean in software engineering? Not # of lines of code produced.

------
m3kw9
Some would think when we are trying stuff or planning for a project is not
getting things done,but the act of planing the right path could get you to
point B faster than if you just heads down code and feel productive.

------
mechnesium
Well, productivity is IS a function of cognitive states. The nonlinearity
could be tied to neurotransmitter activity/concentration such as dopamine, or
perhaps cortisol level.

------
skrebbel
I know it's an open door, but when I saw this title and the associated domain
I immediately thought "hm, yeah, wow, my productivity is pretty much Perlin
noise indeed"

------
TaylorAlexander
Fun short writing. I like it.

