|
|
|
|
|
by jerf
4449 days ago
|
|
"I don't remember at any point having a specific language stop me from achieving my goal because it has some traps or design flaws." I have to admit, a language has never stopped me personally. But it most assuredly has hurt me when trying to program with other people, who do not have a direct psychic hotline into my brain that tells them what preconditions must hold before my code will work properly, and what things they can and can not do with a certain library, and most importantly, why they can and can not do those things. Languages that allow me to encode more of those things into the program itself, instead of the ambient documentation-that-nobody-ever-reads-even-when-I've-put-tons-of-work-into-it, work better. And as my memory isn't all that great, it turns out that if I'm away from my own code for long enough, I become one of those people who don't have a direct hotline to my-brain-in-the-past. |
|
Programming is hard. It's an ongoing process of mastery. This is true with any programming language. There is no silver bullet.
> Languages that allow me to encode more of those things into the program itself
There are plenty of tools that almost every language provides for you. It's an architectural concern to ensure that there is as little mapping between the domain and the code.
I personally find Javascript to be flexible, which allows me to architect my software in a way that is communicative of the domain, without many restrictions.
> I become one of those people who don't have a direct hotline to my-brain-in-the-past
A story is a great way to communicate information. Automated functional (black box) testing is also good. Also, try to reduce the mapping between the domain and the software. Ideally, the software (naming) should have a 1-1 map to the domain.
Also, keep the structures flat, as this idiom tends to reduce complexity.
Keep consistent & iterate on architectural idioms between projects.
These are some ways to improve communicability of the codebase & to have insight into the business domain logic.