There are only two hard things in Computer Science:
cache invalidation and naming things.
―Phil Karlton
Today we received yet another request for naming help: Is there a term which covers both bank accounts and bank cards?
I'm a software engineer working in the banking industry. In our app users can see their cards and accounts, and when they want to perform some action they are usually able to do it either with one of their accounts or cards, so in the app the list of accounts and cards is often shown to the users. What would be a good name for a list of accounts and cards? I don't want to go too generic and pick names like items or entities. Any ideas?
But that’s not all! Today we also received: Precise Word/Term for Payment Voucher In and Out?
Is there any precise word/term that describes the payment vouchers (in and out)?
payment voucher in = ???
payment voucher out = ???
I need a separate word/term to let people choose one of them.
I closed them both as off-topic because I read these as textbook-perfect examples of our Help Center’s guidance in this area, which reads:
But please, don’t ask any questions about the following topics. They are out of scope for this site.
- [...]
- Naming, including naming programming variables/classes
Certain members of our community appear to wish for us to change our established site policy in this area. Or, alternately, for the asker to at least edit the question so as to disingenuously hide what is truly wanted behind a thin veil of plausible deniability and thereby evade prima facie violation of our policy against this class of question.
On Naming Recommendations
Given that Stack Overflow was founded by and for programmers, it is no surprise that coders come to us asking for help naming their software elements. UK coder, speaker, and author Peter Hilton writes the following in his blog entry on Why Naming Things Is Hard:
Anyone who has ever tried to name a child knows that naming is hard. Naming things in code is harder. It’s bad enough that you have to commit to a name that someone isn’t going to like. You also have to be able to live with it. In principle, the naming things in code need only be temporary, but names in code stick just like nicknames at school.
We could of course refactor our code to rename things any time we like, but we don’t do this enough in practice. We also find it hard to agree on what good names and bad names look like, which makes it hard to know when renaming improves a name. If we renamed things more often, then it probably wouldn’t be so hard to name them in the first place.
Unlike naming children, coding involves naming things on a daily basis. When you write code, naming things isn’t just hard, it’s a relentless demand for creativity. Fortunately, programmers are creative people.
Clearly this is important. But should we care? Why or why not?
Can the SE model be extended to provide naming recommendations?
And if it can be so extended, then should it fall within our own site’s remit as defined by our Help Center to provide this service for them? Is this so important a matter that we should open up our site so that coders who need to pick good names can ask us to do that for them? Why or why not?
Or should that instead happen on some other site around the network? Should we recommend that some more programming-related site than ours modify its own help center guidance about this class of question — like on Stack Overflow or Software Engineering or Code Review — so that these naming-recommendation requests can be made somewhere that actually has the necessary domain experts that we lack here?
Or would it be better to recommend a brand new SE site via the Area 51 proposal mechanism?
Related Questions
This matter has come up previously here by people who think we should change our policy, including in no particular order:
- Is Python a snake or a programming language? If the latter, why is it choking my dog?
- English Language & Usage programming variable/classes rule question
- Can I bring that question over here?
- Why can't we help programmers with English language usage?
- Questions about user interface design/wording
- Use of EL&U as a lazy programmers resource
- Should one always remove all context before asking a "what's the best term" question?
- Naming vs. Single word requests
- FAQ On-topic/Off-topic List Revisal
There are only two hard things in all Computer Science; cache invalidation and naming things and one-off errors and cache invalidation.