Top
Best
New

Posted by edent 11 hours ago

I paid people to try and follow my README(shkspr.mobi)
351 points | 183 commentspage 2
WhyNotHugo 10 hours ago|
There's a zeroth step missing from both the Quickstart and Full Set Up: install php-fpm, configure it, and configure your http server to serve using it as a backend.

It seems to be taken for granted — that's something you'd already have in place if you're already serving applications in PHP, but would have to figure out on your own if you haven't served anything in PHP so far in your life.

edent 10 hours ago||
It's a tricky problem. How far back in the stack do you go? The README assumes that you know how to use git to check out the files - or that you can easily save them from the repository. Should it include that as a step in the tutorial?

As I say in the linked article, it depends on what sort of user you have. For a "getting started with Raspberry Pi" document, you might well want to include how to insert an SD card etc.

I'll have a think about the best way to help people figure out if they're running PHP. Thanks for the feedback!

csydas 9 hours ago|||
Feedback and issues you need to troubleshoot with your projects is a good indicator of your audience level, and from my experience it’s helpful to understand that documentation is always under development just like the code

from experience in ENT support where i was sending instructions & quick fix scripts to technically capable persons, you will learn very fast when you’ve missed the mark with your documentation / instructions. tons of times i had ready made solutions that i thought “just copy and paste and go what could possibly go wrong?” and was caught off guard how often a little too much knowledge lends to confusion. i am not blaming the users here it is my fault that i didn’t explain things like “no don’t change this date in the fix that is a special date when the issue could have earliest occurred and it’s there to avoid grabbing more than we need to parse”, but i didn’t tell that so of course people changed it to all sorts of dates thinking they had to

such feedback and issues also got me way better about writing code that avoided chances for such mistakes as i didn’t want users to have to read a novel to understand what to do; it’s a fine balance between what to solve with documentation and what to solve with code

layer8 10 hours ago||||
Installation instructions usually (should) have a “prerequisites” section. You don’t have to explain how to install the prerequisites, but they should be listed.
edent 10 hours ago||
They are - https://gitlab.com/edent/activity-bot/-/blob/main/README.md?...
layer8 10 hours ago|||
From the root comment, it appears to be incomplete.
airstrike 10 hours ago|||
No need for Adobe Creative Cloud is a nice touch
subscribed 6 hours ago||
Yeah, he's taking the piss instead of listing prerequisites.

Tells something about the project, IMO.

airstrike 4 hours ago||
Tells me he's having fun
BoppreH 10 hours ago||||
> How far back in the stack do you go?

My rule of thumb for my READMEs: there should be a list of commands, that when executed in order and in a clean machine, result in the software doing something useful. Yes, this includes `git clone`.

If there's something the user might already have, like the webserver, I add a comment "skip this if you already have a web server". If there are any shortcuts that make it not production-ready, it's time to break out the ALL CAPS.

Limiting the operations to simple commands also helps me keep honest about the instructions (no hidden assumptions), and forces the software to be minimally testable.

mr_mitm 9 hours ago||
Why stop at `git clone`? Why not include `apt install git` and equivalents for all OSs?
dlkasajiewo 9 hours ago|||
Whenever I write documentation, my first step is to explain how silicon can be used as a transistor.
mr_mitm 9 hours ago|||
Yeah well I produce home grown silicon in super novae.

'If you wish to make an apple pie from scratch, you must first invent the universe.'

saltcured 5 hours ago|||
I used to think it was a struggle to walk the user through introductory EM physics.

But, it turns out that was a walk in the park compared to explaining how to acquire and isolate the dopants, not to mention building up the pure silicon wafers.

BoppreH 6 hours ago||||
In my company that comes be default. Also, `git clone` helpfully includes a canonical path to the repository, in case you found the README laying around somewhere.

Otherwise, yes, I would include apt install for the dependencies, which is also incredibly valuable to make explicit. The only tricky part is what package manager to reference.

Telaneo 9 hours ago|||
If Windows/MacOS doesn't ship git by default, then yes, that should be included. On Linux, the people who are running Linux From Scratch can probably infer what the problem is.
franga2000 7 hours ago||
I don't know about these days, but at some point neither Debian or Ubuntu Server shipped with Git. You can still find tutorials that start with apt-get update and apt-get install git-core
Saris 10 hours ago||||
Generally it seems like good READMEs assume you have a compatible OS ready to go, but will give you a summary of all commands to get a working setup from there.
lionkor 10 hours ago||||
It can't hurt to make a sentence or two about assumptions.

Like "This manual assumes that you have a Linux/BSD, a C compiler, GNU Make, and a text editor".

astura 9 hours ago|||
It's really not that tricky at all, every install document I ever wrote has a "prerequisites" section telling you the prerequisites.
sudorm-rf--no-p 10 hours ago||
Even as someone working with PHP I would prefer if the project provides we with some guidelines for setup. Especially if it requires some specific version or extension. Ideally the whole dev environment should be containerized. Then you would again require people to understand and use that layer, but depending on the projects complexity definitely something to consider to make it easier to work with
sccxy 9 hours ago||
Most README files should include a screenshot.

Even if it is a command-line tool, a screenshot helps provide a better understanding of what to expect.

Matl 4 hours ago|
Turns out a picture is worth a thousand words.
simonbarker87 10 hours ago||
Most documentation reads like you should already know what you’re doing, which makes sense because it was written by someone who already knows how to do the process.

I think good technical writing requires the same skills as good product ownership, that is empathy for the user and their perspective. Often technical writing is an after thought and not someone’s whole role and it really shows.

Good article

rapnie 9 hours ago||
I know there are some great README's (and other documents) around, that document best-practices or templates for great README's. I found one that looked very useful and would've sworn I starred the repo to find it again in time of need. Alas, can't find it. Anyone has some good resources to point to, to add to this thread?

Update: Found some related HN threads (omitted link-rotted submissions).

- I'd like to review your README https://news.ycombinator.com/item?id=26842191 (91 comments)

- Readme.so – Easiest Way to Create a Readme https://news.ycombinator.com/item?id=27006740 (65 comments)

- Readme Driven Development https://news.ycombinator.com/item?id=1627246 (57 comments)

estetlinus 9 hours ago|
Theres a GitHub repo called awsome readmes
macintux 8 hours ago||
Thanks for the tip. A couple I found with a quick search:

https://github.com/matiassingers/awesome-readme

https://github.com/yowainwright/awesome-readmes

alaudet 9 hours ago||
Documentation is so important. I have been treating documentation in the same way I handle code. I found mkdocs works pretty well and integrated with a github job that updates the docs when I commit changes to my main branch. It also allows contributors to correct errors or add helpful instructions to documents. I think I have not paid enough attention to my biases though and like the idea of hiring someone to go through the process. I think my instructions are sound but maybe not so much for a user who is not as familiar as I am. I may not be doing things the optimal way but I have used a lot of documentation over the years and feel what I have done addresses gripes I have had with "Big Tech" provided docs.
WhyNotHugo 9 hours ago|
mkdocs still uses "web fonts" for icons. This hack was required for compatibility with Internet Explorer, but is just cargo-culting these days. It's an accessibility issue in that users who disable web fonts (for readability) don't see icons, they just see unicode placeholders everywhere ("tofu").
alaudet 7 hours ago||
I am using Material for mkdocs and I don't see any difference when turning off web fonts.
WhyNotHugo 41 minutes ago||
You mean https://squidfunk.github.io/mkdocs-material/ ? Try opening that site, and press the Down or PgDown keys on your keyboard.
adrianmonk 3 hours ago||
To a certain extent, you can think of writing documentation like writing code. Leverage your coding skills to improve your explanatory writing.

Each phrase or sentence is an operation that changes the state. The state is the mind of the reader. For it to work, you have to understand the starting state, and then construct a valid sequence that modifies the state step by step until it reaches the desired state. Every step has preconditions and postconditions. You can't leave important values uninitialized. You can't refer to symbols that haven't been defined. You can't just sit down and blurt out whatever comes to mind; you have to "play computer" (or "play reader") in your head to model the effects of what you're writing. You need to be aware of which "platform" you're targeting (developers, users) and understand quirks of each variation of that platform. Some of your operations might fail, and you may need a way to detect and/or recover.

Obviously don't take it too far and reduce writing to this. But I think it's helpful for getting into a mindset where you are thinking about communication in an end-to-end, closed-loop way. Your mind needs to be engaged and stay engaged with the question of what the experience is like for the reader. It's very easy to default to an open-loop mode where you just have a random string of thoughts about the subject, let your brain translate them into words, write that down, and call it done. There's a big difference between expressing thoughts and communicating ideas effectively.

Thinking about it this way could also maybe help with motivation. It's satisfying to write computer code and really nail it and have it do its job effectively, right? You can get a similar feeling of satisfaction from good writing.

instakill 1 hour ago|
these are really good heuristics, thanks! I am going to adopt this in my writing/editing processes.
sb8244 4 hours ago||
When I was testing my books' instructions, I would operate from a fresh state and only allow copy paste. Every single command and line of code had to be expressed and in the correct order.

This was generally really a good way to go about it, because it requires everything to be correct with no room for adjustment.

Still people would miss things, but it always came from skipping instructions (sometimes completely.) Maybe 10 support inquiries total.

theapiartist 8 hours ago||
We most times forget that not everyone can read our minds or see exactly what we see in our systems. When it comes to communicating ideas, there's always the requirement to actually communicate what it is the readers needs to know.

I oftentimes find myself spending more time rewriting readmes than writing code.

Treat the readme like a journey/walkthrough of your product, follow an order, and keep it simple to understand.

ang_cire 4 hours ago||
> My jokes aren't funny and are actively confusing.

2real4me

In all seriousness tho, I don't really put jokes in readmes or code comments. Jokes should be tied to a moment where they make sense, not just be present in perpetuum. Slack is great for jokes, or maybe even a notion design doc comment, alongside the actual feedback.

But sticking jokes in your readme just feels like "I have you here for other reasons, now you have to listen to me be funny".

piro0919 5 hours ago|
I half agree.

I build apps with Claude Code, and I test them by having the AI click through the UI with Playwright. That's enough to check that things work as specified and nothing is broken.

But I think the purpose is different when an AI tries it and when a person tries it. To put it in extreme terms, AI is for UI and people are for UX. People find UI problems too, though: in my music player, songs got blocked from playing in Safari on a real iPad, and I only found it by using it myself. The things found in this article, like the jokes that didn't land or not knowing what the tool even does, are on the side only people can find.

(I wrote this in Japanese and used AI to translate it.)

More comments...