Live data from Hacker News

Ask HN: How are some people exceptionally productive?

news.ycombinator.com

101–110 of 137 posts

Re: Ask HN: How are some people exceptionally productive?

#101
post #23

This sounds counterintuitive, but: learn when to take breaks and step away from problems. Some of my most productive hours have been spent walking through parks, coming to crucial realizations or designing approaches that end up saving me days (or even weeks!) of wasted effort. Along the same lines, the best advice I ever received was from an old music teacher: do less, better. Also: if you think "delegating" and "ma…

I call these 'piss break revelations'. Especially when debugging or doing analysis, just take a quick break and suddenly you have new ideas.

Re: Ask HN: How are some people exceptionally productive?

#102
post #69

Earlier quoted context omitted.

There are more DSCM implementations based on a DAG. (for example git, mercurial, bzr, monotone, codeville, fossil) The only one that draws serious usability complaints all the time is git.

To borrow a turn of phrase from Bjarne Stroustroup, there are two kinds of software: software people complain about, and software nobody uses.

A couple of years ago the others were in use as well.

git won for various reasons, but the UI complaints certainly aren't because people don't understand DAGs.

Re: Ask HN: How are some people exceptionally productive?

#103
post #76

Earlier quoted context omitted.

To borrow a turn of phrase from Bjarne Stroustroup, there are two kinds of software: software people complain about, and software nobody uses.

Yeah, the reason everyone complains about Git is because everyone uses git. SVN was the horse to beat 10 years ago, because everyone used it.

people complained about git's UI 10 years ago. They didn't complain (as much, by far) about the UI of the other DAG based DSCMs.

Re: Ask HN: How are some people exceptionally productive?

#104

Earlier quoted context omitted.

2.) looking things up. Well, shit. Is this even possible in web development these days? With the exception of jQuery, there hasn't been a single JS or backend framework that I've used from one year to the next.

So don't use them. Virtually all my work at Google was with vanilla JS and I had the DOM APIs memorized in my head.

So how do you know you're not missing out, or more precisely, that you're not missing out and what you are missing out is so great that the productivity you gain from restricting yourself to the subset of tools you fully master does not compensate for what you are missing out - I am thinking of frameworks like Angular or React? I am asking that as someone who doesn't use the frameworks I mentioned and sticks with vanilla JS and DOM APIs.

If you were at Google I suppose that you had lots of technical conversations with colleagues so you more or less knew about the latest trends and their benefits, but it's harder at a smaller company or working on your own.

Re: Ask HN: How are some people exceptionally productive?

#105
There is one factor I haven't seen addressed: mindset.

If you have certainty in what you're doing, if you have belief, it's a lot easier to be productive than if you're questioning everything ("Why am I doing this?", "Is there a better approach?"). That outlook on life has scuppered my productivity at times.

Re: Ask HN: How are some people exceptionally productive?

#106
> If you are a highly productive person (and yet have a good work-life balance), could you share your methods?

In order of importance:

Code:

- In order or priority when coding: Does what you want it to, easy to understand, good performance. You can re-write something that does what you want it to to be easy to understand, you can rewrite something that's easy to understand into something with good performance. And you'll generally learn something at each step of that chain which makes the next step easier, (or possible.)

- If working on the code, (not just trying to get a map of it in my head,) I only have one function open on my screen at a time. By that I mean that everything else will be collapsed or in a different buffer; somehow I won't even be looking at it. This does not, of itself, make you any faster – at least not that I'm aware of, it may lower some mental load that I haven't considered. However, if your code is so entangled that you can't write without having several functions open on your screen at the same time, then that's a very strong sign that that there's a poor abstraction at work. In which case it's often better to burn it to the ground and write a new one. Which brings us to:

- Burn it to the ground and start over. Specifically with respect to hunting bugs: Before diving into a function someone wrote, or that I wrote some time ago, to hunt a bug, I'll try to write a new function that does what that function reports itself to do, (or method if I'm using OOP.) Often, it's a lot faster to write something that doesn't have that error to begin with than it is to work out precisely what went wrong the first time around.

- Naming. Good naming is hard, and the decision as to what to name is non-trivial. It may seem obvious to you that a bit of code gives you something but it's not necessarily so to others. For this reason alone, though I don't like pair programming, I make time every couple of weeks to do it. It gives me some idea of what's non-obvious, both to me and to them. “What's this?” Having the right things named makes your code much cleaner and easier to manipulate.

- If the function doesn't fit on one reasonably sized monitor, in other words if it's longer than a couple of hundred lines, then chances are either I'm writing it wrong or I've made some sort of design mistake; the function is too general, or tries to do too many things. This is not a strict rule as the other, and obviously varies to some degree by the syntax of the language one uses. A relatively dense language like Lisp I'd say if it's longer than 40 lines.

- Don't use a new library in production code unless you have good reason to. There are far too many people who want to play with the latest cool toy just because it is the latest cool toy. Do that on your own time.

Work method:

- I don't have a to-do list, I have a calendar. This helps with managing interruptions and prioritising things. IME it's easy for people's to-do lists to grow far too large, without them paying any mind to when they're going to do things and the little inefficiencies involved in changing to each task. Someone comes up and wants something done I can look at the calendar and know what can be moved and when something can be slotted in.

- If I can help it, and this means unless someone very senior in the company tells me otherwise, I don't book periods of time shorter than an hour for a task. If there are a lots of little tasks that are related then I group them and book an hour. If there's only one little task, it's still an hour. Preferably, however, these are things that get pushed later in the week when they can be grouped.

- I don't have automatically checked email and I don't have any work-known email accounts on any non-work computers. I check my email at the start of the day and the end of the day, and that's it. Email is an enormous time sink.

- I have a separate work phone and home phone, and the work phone is turned off and lives in a locked draw in my office when I'm not at work.

- Strictly police your free time. If someone asks you whether you can just do this thing for them, or whether you can stay on that night to get something banged out… well, there are times to say yes, but most of the time the answer should be no. You probably need your down time. This also makes people take your time more seriously and lets them know that if you are staying on it is a favour.

- I only take holiday in week long chunks of greater. Contiguous time off is, IME, dramatically more rejuvenating than a day here and a day there.

- Have hobbies. All my best ideas have come from hobbies. Be that reading fiction and thinking 'I can make a shadow of that.' Or seeing cool art examples. Or meeting someone at a club who tells me about a problem they have. You might think that this is going to be a point about knowing what people want. It's not, although that can happen. It's a point about knowing how different people think about the problems which lets you generate more fitting abstractions.

Re: Ask HN: How are some people exceptionally productive?

#107
post #4

In 2007, I finished my bba, received an angel investment, and started a company. Three months later (and with my investor's enthusiastic support), I started a non-profit street magazine. About two years later, I ended up in hospital with stroke symptoms and blood pressure on the 'how are you alive?' end of the scale. Because of this, I beg anyone who wants to be as highly productive as I was to please take care of yo…

I think having something else to also do is critical. I'm a musician and I kept 70+ hour weeks in school, but 16 of those hours were at gigs, and Sundays were off limits for anything at all - no work at all. It wasn't gigging but just jamming when I later was in startup land for a few years. I found the effect the same. You need something to get your mind completely off work.

To be honest, my current problem is exactly the opposite - I can't get my mind on work. There're always at least three other projects occupying my mind that would be a much better use of my time than the day job except I wouldn't be able to pay my rent with them :(.

Re: Ask HN: How are some people exceptionally productive?

#108

Earlier quoted context omitted.

2.) looking things up. Well, shit. Is this even possible in web development these days? With the exception of jQuery, there hasn't been a single JS or backend framework that I've used from one year to the next.

So don't use them. Virtually all my work at Google was with vanilla JS and I had the DOM APIs memorized in my head.

I'd love nothing more than to just use the latest DOM APIs, but every company I've spoken to in the last 5 years wants a framework. They feel more comfortable working with an app structure that everybody else is using to supposedly great effect.

Re: Ask HN: How are some people exceptionally productive?

#109
post #104

Earlier quoted context omitted.

So don't use them. Virtually all my work at Google was with vanilla JS and I had the DOM APIs memorized in my head.

So how do you know you're not missing out, or more precisely, that you're not missing out and what you are missing out is so great that the productivity you gain from restricting yourself to the subset of tools you fully master does not compensate for what you are missing out - I am thinking of frameworks like Angular or React? I am asking that as someone who doesn't use the frameworks I mentioned and sticks with van…

Anybody who adopted Angular right out of the gate is kicking themselves now because everything they wrote in the last year is now obsolete. Hopping on the latest thing might be fun and you might learn a few things, but I'd prefer to wait for things to be fully battle tested and have a good history of support before I put it into production.

Another good reason is speed. It's rare for a framework to be faster than native DOM api's. And the app loads faster!

Re: Ask HN: How are some people exceptionally productive?

#110

Never heard of the two people you mention, but I'll share what I've observed: The two biggest time sinks in everyday programming are 1.) communicating with everyone else and 2.) looking things up. If you can avoid these and have a quick analytical mind, you can basically program as quickly as you can type. So the secret to being insanely productive is to work as a solo programmer in a domain where you are thoroughly…

Isn't this an argument in favor of IDEs vs editors?

As much as I prefer the philosophy of Emacs/vim/sublime + cmdline tools, code completion is never great (see Yegge's "grok" rants).

I really enjoyed a project I wrote in Java inside Eclipse, because code completion really helped me not open Google all the time. But I hate everything else about Java...

Contrast with Go, where achieving flow is hard because you can't even f* compile with an unused import. And I love everything else about Go (fast compiles, easy deploys).

(One could argue that if I haven't memorized the smallish Go standard libraries I'm not smart enough to work in the field...)

Notch livecoding a "minecraft clone" for Ludum Dare is a great display of what you talked about: familiar problem, familiar environment, great speed. Unfortunately we can't do the same with Fabrice or Jeff...

Post reply on HN