4. Future thinking is future trashing
Solve the problem at hand. Don't think "We can do this in a more general way and, in the future, it will be easier to add more". Adding more will never come and you'll have to deal with a pile of trash.
Solve one problem, then solve the next. A patter of problem will emerge -- or not.
6 3/3. Good languages come with integrated documentation
If the language comes with its own way of documenting functions/classes/modules/whatever and it comes with even the simplest doc generator, you can be sure all the language things and libraries will have a good documentation.
But languages with no integrated documentation will most of the time have bad documentation.
8. A language is much more than a language
A programming language is that thing that you write and make things "go". But it has much more beyond special words: It has a build system, it has a dependency control system, it has a way of making tools/libraries/frameworks interact, it has a community, it has a way of dealing with people.
Don't pick languages just 'cause they easier to use.
@juliobiason At the same time I have to argue that you might have to allow for some bad usage in order to get the most good usage out of your software.
So while I don't disagree with having the best, most positive, impact you can, it does worry me for programmers to be blamed for how their software is used.
@alcinnz Had a long discussion with a coworker a few days ago exactly about this.
"This is against free software, isn't it?" and he was right.
But I really feel we should think how our apps can be misused and worry about, instead of focusing on the happy path.
... or maybe it just helps me with my continuous pessimism about software.
@juliobiason There is a path you can take which (depending on who you ask) isn't against free software. It certainly meets the definitions, and some nuance in Stallman's speeches.
If you're worried enough about your software falling into the wrong hands you don't have to publish it publically. In that way you can mostly decide who gets access to your software whilst still giving those people full software freedom over that program.
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).