by andersonmvd on 3/17/22, 1:26 PM with 116 comments
by a_shovel on 3/17/22, 2:52 PM
You can get 95% with no effort at all, 99% with a bit of thought, 99.9% with some effort, 99.99% with a smart design, some research, and a lot of effort, and anything further requires making it your full-time job indefinitely.
It gets thornier when it comes to personal things like names and gender. If you tell a group of people that their identity isn't supported by your system, some people will accept that and work around it, some people will be mad at you, and you'll just have to accept that the latter have a good point. You have to stop developing it at some point, so all you can do is try to cover as many people as possible.
That said, it is incredibly revealing of your personal biases if you design a system that breaks on things like names with "é", or "ñ", or punctuation; or if you implement gender as a boolean that also determines the user's pronouns.
by matsemann on 3/17/22, 1:57 PM
No, these "awesome" lists are seldom curated. They are just dumps of hundreds or thousands of links.
by asdfasgasdgasdg on 3/17/22, 2:22 PM
Avoiding all these assumptions will introduce unacceptable complexity for many projects. In many of the listed cases, making the assumption will require a tiny fraction of your addressable market to use a workaround, which they are likely already used to using with other products.
So there is a cost-benefit study to be done here. You have finite engineering time. Which of these assumptions can you avoid with little net increase in complexity? Which ones are actually simplifying? Which ones will cause critical problems for your users? And which ones are too expensive to fix given the return on investment?
I think the content of lists like this are decently useful, but the tone is condescending and unwarranted. I don't "believe" that everyone has a first middle and last name. I do believe that people with fifteen names are capable of leaving out some of the ones in the middle, and it makes my job a lot easier to require them to do so.
by qwerty456127 on 3/17/22, 2:15 PM
A normal email address exactly has one @ character. There is an infinite number of possible weird things everyone has little though non-zero chance to encounter on every corner of their life.
> therefore your implementation should allow this
I wouldn't be sure it should. Implementing support for this has direct and indirect, explicit and implicit costs one will have to consider and decide if that's worth it.
In fact, whatever a human can believe about the world, it won't equal what actually is. So we just take decisions about how precise our models have to be to be practical.
You can never finish a program if you insist it has to be perfect and unbreakable. The only reasonable objective is to make sure it does the job 99.9 % of real-life times.
by kazinator on 3/17/22, 5:15 PM
Even if the programmer wanted to do that, his boss, and boss's boss would disagree.
It is a falsehood, of course, that "I don't have to handle cases outside of the specification we committed to". Though not always, and not for all cases.
Say that my reuqirements are to write a music engraving program for western notation. Of course, I take it for granted that (that type of) music can be written down; my program is not an expression of my personal belief that all music can be written down, or that it has a composer.
by ihateolives on 3/17/22, 2:10 PM
Yup, I used to spend my summers on an island where my address would be: farmstead name, island, country. Zip code was optional. Had to find creative ways to satisfy various web forms.
by ballenf on 3/17/22, 2:48 PM
When you onboard to a new company, they will automatically give you access to whatever systems you need to do your job.
or
It will be automatic or easy to get access to all the systems you need to do your job.
by jedberg on 3/17/22, 6:40 PM
Don't implement date and time calculations yourself, just use the library, even for things like "add a day".
Don't parse addresses yourself, use a library. Don't validate email yourself, use a library. Don't validate input yourself, use a library.
Unless the runtime or memory space is absolutely critical to your application, using a library won't make things noticeably worse.
by nofunsir on 3/17/22, 4:24 PM
by allears on 3/17/22, 3:32 PM
by gregfjohnson on 3/17/22, 5:37 PM
- The compiler won’t have bugs.
- The compiler won’t have show-stopping bugs.
- The compiler’s bugs will be fixed quickly.
- The compiler’s bugs can be fixed.
But I think they should have added:
- My code does not work because of bugs in the compiler..
by biasedestimate on 3/17/22, 2:08 PM
by drivers99 on 3/17/22, 3:28 PM
(Following my own advice...) For example: https://chiselapp.com/user/ttmrichter/repository/gng/doc/tru...
> 10× programmers exist.
(i.e. saying they don't exist) Maybe a writing prompt for a blog post, but there's nothing else there about it.
by jqpabc123 on 3/17/22, 4:26 PM
- Programming skill is all you need to build great software.
About the only case where I would say this might be true is when your users are other programmers. If the plan is to target a non-technical market, good design and in-depth understanding of the problem space are just as important if not more so.
My favorite example of this is the world's most popular accounting software. Good design and marketing --- mediocre programming.
by daphneokeefe on 3/17/22, 5:54 PM
by Hussell on 3/17/22, 3:08 PM
Partial list:
Falsehoods about Airline Seat Maps https://duffel.com/blog/falsehoods-about-seat-maps
Falsehoods about Biometrics https://shkspr.mobi/blog/2021/01/falsehoods-programmers-beli...
Falsehoods about Plain Text https://jeremyhussell.blogspot.com/2017/11/falsehoods-progra...
by glitchc on 3/17/22, 2:00 PM
by Optimal_Persona on 3/17/22, 8:36 PM
I tried to create a nonprofit account at Box.com a few years ago with a .net address. It took almost 3 weeks of back-and-forth with customer support and multiple interactions with higher-ups in their legal dept. to resolve. No one there had ever considered the possibility.
by kmod on 3/17/22, 6:36 PM
I just put the example into GPT3: Prompt: Can an email address contain more than one @ sign? Answer: No, an email address can only contain one @ sign.
I'm on my phone so it's a bit laborious to test more
by hintymad on 3/17/22, 4:15 PM
> "Time passes at the same speed on top of a mountain and at the bottom of a valley".
Just curious, does this kind of gravitational time dilation bear any consequence in our systems, given that we are building systems with the assumption that system clocks are not always accurate and there is no global time?
by raverbashing on 3/17/22, 4:30 PM
by bko on 3/17/22, 5:26 PM
Most processors in active use are 32-bit or larger.
16-bit or larger?
8-bit or larger?
OH COME ON!
by xdennis on 3/17/22, 2:28 PM
[1]: https://medium.com/gender-2-0/falsehoods-programmers-believe...