Live data from Hacker News

Do One Thing

radar.oreilly.com

31–40 of 136 posts

Re: Do One Thing

#31
post #5

I had two thoughts while reading this. 1 - The need for the web to be profitable in some way makes 'single tools' hard to build. You have to grow users, add features, etc, etc. So even if you have an API or something useful it likely won't scale economically. Unless it's government supported or behind a foundation of some sort. The Twitter API comes to mind here. 2 - This is tricky because for the web to meet the UNI…

I don't follow your first point. For most web things (where there's zero marginal cost) profitability has nothing to do with scaling.

Re: Do One Thing

#32
post #21

Earlier quoted context omitted.

The OP was talking about web apps. What do Makefiles and npm have to with Evernote or Dropbox?

Why use a web app to take notes when one has vi or emacs?

Because it's really convenient to be able to make a note on your phone or tablet, then access it and make additional post-meeting notes shortly thereafter, on a laptop, all in the same interface (so you have the same features, or at least a set of common features).

That's just one, assuming you never want formatting, tables, pictures, etc.

Re: Do One Thing

#33
post #27

There is some merit to "doing one thing well", but taken to the extreme it can be horrible in a different way: tar cvf - FILE-LIST | gzip -c > FILE.tar.gz ( https://xkcd.com/1168/ )

Rob in that comic clearly hasn't used Unix long enough to know about the Arnold mnemonic[1].

[1] http://i.imgur.com/Vf0An8J.png

Re: Do One Thing

#34
post #16

On the 'do one thing and do it well' issue, there seem to be two spectrums: 1. suitability of a tool to multiple tasks 2. number of features a tool has This makes for sort of a field with four quadrants: 1. simple but flexible tools 2. complex and featureful tools 3. specialized but simple tools, 4. highly specialized and highly featureful tools So take a tool like grep and it clearly belongs in the first quadrant. Y…

In this context...

"specialized" = Do one thing

"flexible" = and do it well.

That said, the key ingredient of the Unix philosophy that is missing isn't specialised, flexible tools, it's composability of those tools. Imagine if you couldn't pipe grep output to another program, wouldn't it be a lot less useful? I'd say so.

There are ways we can get around this, but they would require a fair amount of development time. To give you one example, consider how the JACK audio server allows programs to share audio streams. Similar data streaming arrangements could be made for other types of data.

Re: Do One Thing

#35
post #16

On the 'do one thing and do it well' issue, there seem to be two spectrums: 1. suitability of a tool to multiple tasks 2. number of features a tool has This makes for sort of a field with four quadrants: 1. simple but flexible tools 2. complex and featureful tools 3. specialized but simple tools, 4. highly specialized and highly featureful tools So take a tool like grep and it clearly belongs in the first quadrant. Y…

There are quite a few things in the fourth category, and I'd like to say, for instance: Beeminder. Specialized, but there is a lot going on. Honestly, I like it. I could just keep a text file if I didn't want those features, and I honestly can't think of any features I would subtract. Which raises the larger question: are the advocating flexible but simple tools, straightforward but domain specific tools, or are they just advocating against building something that is a complete mess and a waste of time?

It's important to remember that while quite involved and extremely domain specific, Beeminder has an API. He seems to care a lot about that, and I have no idea if his real point is "make things that don't suck and avoid digital vertical integration".

Re: Do One Thing

#36

People mean a lot of things when they say "one thing". "Do one thing" can mean "replace all occurrences of one string with another". Or it could mean "browse the web", which of course isn't really one thing but a thousand things.

I think the primary issue here is, the more comfortable you are with technology, the harder it is to see the forrest (the goal) for the trees (the discrete tasks involved to get you there).

Re: Do One Thing

#38
It sounds like what he's actually arguing for is cohesion, not just simplicity. And if that's the case, I'm with him.

Cohesion is achieved when the degree of complexity is determined by both domain and audience, so Photoshop's relative complexity and Pixelmator's relative simplicity are both fine - in each case the domain is satisfactorily handled for the needs of the respective audience. They're both cohesive tools. Now if Photoshop decided to throw in a chat client (hello gmail), we'd be having a different conversation.

However, if the author is actually advocating breaking up Photoshop into a thousand pluggable little tools that everyone would have to piecemeal assemble into some sort of shared "workspace," that's where we (and most non-geeks) part company.

Re: Do One Thing

#39

Earlier quoted context omitted.

Part of my comment was about his statement that the Unix philosophy is something of the past, which is false. Parts of the rest of my comment dealt with what he said about the plethora of "one size fits all" tools people are using now instead of the simple tools. Can you not make the connection?

The OP was talking about web apps. What do Makefiles and npm have to with Evernote or Dropbox?

By "OP" you mean the author of the article then, no, the article is not about web apps.

Re: Do One Thing

#40

I'm definitely guilty of holding onto a philosophy and thinking it applies universally, so I can't blame people that hold onto the Unix philosophy extremely strongly. But I can't help but think that the world requires a hell of a lot more pragmatism than the Unix philosophy can provide. The first problem I see is that "One Thing" is really subjective. Some people might see Postgres as doing one thing really well (It…

> but its not because it did more than one thing, it is because it didn't do them well.

In general I agree with your line of thinking, but I will nitpick on this particular sentence (or the way it's phrased) and say: the whole idea of doing only one thing is that if you try to do more than one thing, you will definitely not do them all well.

I do agree with you though. The "many things" that postgresql does are all actually just one thing: database system.

Yea some people could argue that under the cover it's many different things, but the whole idea is about focus, not about counting features. There are always multiple aspects to the "one thing" (whatever your one thing happens to be). Doing the one thing well means tackling all of these aspects.

The reason you can't do multiple things well is that each one of the multiple things you want to do will in itself have many aspects, and your focus will be fragmented trying to tackle too many things with very limited resources.

Post reply on HN