I’m not complaining, but I didn’t realize how much work it was. It makes me really respect the people who do it on a regular basis.
For example:
- You know how to use your software, but other people don’t. So you need to write documentation.
- You can just modify the source files, but it’s impractical for everyone to do that. So you need to add a config file.
- You can just drag the output files into place, but that’s impractical for everyone to do. So you need to package it.
- You trust yourself, but distro maintainers rightfully don’t. So you need to package your source code and configure the package to compile it.
- You will abide by your idea of how the software should be used, but other people might not. So you need to pick a license.
Sometimes I think there must be an easier way, but I can’t think of any. I guess it probably gets easier with experience.
I’ve seen a chart where software development complexity grows 3 times on each of these steps. For example:
- implement a business logic: 1 day
- cover with tests: 1 * 3 = 3 days
- write documentation: 1 * 3 * 3 = 9 days
- make it installable by other users: 1 * 3 * 3 * 3 = 27 days
That’s why engineers are, on average, paid more than researchers… And why research is such a nicer job.
Create robust and easy-to-use stuff is tough and you don’t get much reward
I’ve been attempting to build systems to make this “robustness” redundant across all my works, but I always feel there’s something more that I missed. I can’t tell if this task is simply never-ending or I just lack the knowledge of covering all the dots from the get-go or both.
Those are signs of an ever evolving/improving mind! You continue to perfect your craft and as such your older self is less efficient, perfect and organised.
This is basically the problem with “suckless” software summed up.
Terrible name too
Packaging and installation are important for released software