Ask Slashdot: What Are Some Lies Programmers Tell Themselves?
snydeq writes: "Confidence in our power over machines also makes us guilty of hoping to bend reality to our code," writes Peter Wayner, in a discussion of nine lies programmers tell themselves about their code. "Of course, many problems stem from assumptions we programmers make that simply aren't correct. They're usually sort of true some of the time, but that's not the same as being true all of the time. As Mark Twain supposedly said, 'It ain't what you don't know that gets you into trouble. It's what you know for sure that just ain't so.'"
The nine lies Wayner mentions in his discussion include: "Questions have one answer," "Null is acceptable," "Human relationships can be codified," "'Unicode' stands for universal communication," "Numbers are accurate," "Human language is consistent," "Time is consistent," "Files are consistent," and "We're in control." Can you think of any other lies programmers tell themselves?
I'll document it tomorrow
or even "My code is correct, so I don't need to test."
"We'll fix it in the next release."
"One more compile then I'm going to bed..."
Seven puppies were harmed during the making of this post.
... honest... repeat each week for six months.
I love stacking my barbecues in the shed at the end of summer - you can't beat a bit of grill on grill action.
"... including the testing."
I'm a better than average programmer.
Who ordered that?
It compiles, so it has to work. Right?
"Good programming discussion is found at Slashdot"
"The code is self-documenting!"
Anons need not reply. Questions end with a question mark.
You meant, of course, discrimination FOR women:
http://www.news.cornell.edu/stories/2015/04/women-preferred-21-over-men-stem-faculty-positions
All units pass. Who needs integration tests/functionality tests/load tests?
Fortran is a dead language.
Just because you are paranoid does not mean that no-one is out to get you.
I tell myself that all the time.
"I would kill you but then I'd have to fix your shit"
What I tell our (only) Delphi programmer at work
"That error condition will never happen because I trap for it."
"No one will ever put that kind of stuff into this form field."
"No customer will ever need more than X number of records for $DATA_ITEM." (kids names, addresses, cars, phone numbers, etc etc etc)"
"TLD extensions will never be longer than X number of characters."
"I can positively validate an email address with my home-grown code."
"No one has a one-letter name." ...and on and on and on....
Just cruising through this digital world at 33 1/3 rpm...
"I went to the smart school and do intellectual things. My boss went to the party school and does PHB things. I think it's pretty clear who's winning here."
Nothing posted to
"I am worth what they pay me."
"I am an engineer."
"Users wish they knew who created this wonderful software."
Prove anything by multiplying Huge Number times Tiny Number
"Java is fast"
I understand the task
I have thought of all the possible test scenarios
I have coded for all possible test scenarios
The scope will not change
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Order of blame;
1.) The error is in the hardware.
2.) The error is in the library routine.
3.) The error is in my code.
Order of probability;
1.) The error is in my code.
2.) The error is in the library routine.
3.) The error is in the hardware.
I can get that done by <any duration>.
These should be required reading for programmers AND designers. I'm looking at you Mr. shitty designer/programmer that only lets me put 13 characters in for my (first) name.
* Falsehoods about Names
* Falsehoods about Time
* Falsehoods about Computers, aka, Murphy's Computers Laws
* 97 Things Every Programmer should know
If the customer asked for it, that must be exactly what they want.
"Our two-party system is like a bowl of shit looking at itself in a mirror." - Lewis Black
All throughout school, everyone told me there are jobs for programmers. Everyone lied. I have multiple advanced degrees in computer science. I have started open source projects. I have contributed to open source projects. I debug software for fun. I live and breathe code. And yet, I have no job, and I have no prospects. I apply for jobs, and nothing happens. In my experience, all job listings are lies, and there aren't any jobs out there. There's absolutely nothing at all.
No. No you won't.
DevOps will solve our problems.
Are you fucking kidding me? I refactor just to break shit because my code works too well!! Tech debt my ass! If it's working right, it's got hidden bugs I just haven't fixed yet!!
It's just a quick fix - that'll only take 10 minutes.
Specialist Mac support for creative pros, Melbourne
"If something seems stupid to me, it is, because I am definitely smart."
Example:
"Smart pointers are stupid. I know how to manage memory, and anyone who can't have zero memory leaks directly using malloc and free shouldn't be coding anyway."
1. I can have this done by the deadline
2. Oh, it's a simple change, just commit it.
3. I can adapt another routine, it'll cut the programming time
4. Your code sucks
5. My code shines
6. Don't bother with that use case, it'll never come up.
7. Our users wouldn't be that stupid.
8. Our users wouldn't be that smart.
9. It's completely debugged.
11. There are no errors in this top 10 list.
Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
I calll bullshit. There's a HUGE difference between positions in education and in industry and commerce.
Outside of the educational community, the desire for companies to hire ANY technical women is massive. You can for sure gat an interview at any tech company if you are a woman. You will be 99% sure to be made an offer if you are at all competent (and sometimes even if not, the power of quotas).
I have a friend with a daughter who is a CS major, and she was offered extremely well paid internships with a large signing bonus at every single company she applied for (ten or so I believe). She is pretty skilled but currently only in Python.
I say that not to say it is negative but just to speak the truth about how things are, because so many seem to think it hard for women to find tech jobs once they acquire skills and they are scaring away young women from a gold mine with a very rich vein.
To be frank it's not hard for any competent male to find tech work either, but loads of large companies have diversity quotas and they are absolutely desperate to fill them which gives women a huge advantage...
Note that his ease of hiring is utterly separate from the conditions they may find once working there. Outside of Silicon Valley women are usually treated well and as equals, in most California companies they will probably face horrific abuse and discrimination (which is where the myth that tech women are mostly mistreated in companies comes from).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
For a given function, null return either has a meaning or it does not. "Something went wrong" is not a good enough reason to return null, unless your function documentation says what might go wrong and what that null therefore means.
If null has no meaning then make it a notnull return, or in Swift a non-optional.
I used to work with a programmer that used to make all returns optional "just in case". I wanted to punch him.
My job can't be replaced by artificial intelligence.
also described as: "I can keep working as a software developer as long as I want to".
Why is Snark Required?
I've discussed the Linux RAID code with Neil Brown, who wrote most of it. That conversation made me keenly aware that my grasp of Linux storage it is rather pitiful.
I've discussed proposals for new internet protocols with Vint Cerf, known as "the father of the internet". I was reminded I'm the big fish only in a very, very small pond.
A few weeks ago someone at work asked for "a Perl guru". Just that morning I had participated in the Slashdot discussion with Larry Wall - a fresh reminder of who is a Perl guru and who isn't.
My co-worker read something about Linux on Stackoverflow, and he knew as much as other people posting to that question knew - he felt like an expert.
A co-worker once used "telnet 25" to do smtp. Nobody else he knows does that, so he's an expert.
My own experience is that the more I learn, the more I am exposed to actual experts, the more I discover that there are many people much more knowledgeable than I. If I think I'm really good, that actually just means I *might* be better, in some ways, than the people I talk to - thinking I'm good just means I'm failing to learn from people who are better.
I strongly suspect those who are humble are the people who read the work of Knuth, T'so, Engelschall, etc - the really programmers know they aren't the best.
"Neural nets and deep machine learning are artificial intelligence"
"I'll clean up this code later."
Sleep your way to a whiter smile...date a dentist!
Number one lie:
"Yes, this program/module/milestone will be completed on schedule. "
"Don't worry. This will be used only as a demo/proof of concept and never in production".
Actually that's a lie told to me by the management and I tend to believe it up to the date when the demo happens.
> I am the best developer for my domain.
For an sufficiently narrowly defined domain, so am I. Then again, so is Lennart Poettering.
Eric S. Raymond is a far more accomplished developer than I am. It is good for me to remember there are many, many far more accomplished, and many who are just plain more knowledgeable all around.
I happen to be, or once was, the best in the world at protecting paid web sites from unauthorized access. I was a longtime member of many cracker forums, and got a certain amount of respect because I had been around for many years and knew the ins and outs of the various security systems. Little did they know I was a spy, that the most senior member of their community was there to surveil them and feed them misinformation. So I was the best at my particular speciality, but plenty of people are better than me in much larger, more general domains. Being the best at one very specific thing doesn't make me good, it makes not versatile.
"I'll document this code later."
"I fully understand the problem"
The most often told and most consequential lie that programmers constantly tell themselves is this one:
I'll fix this later.
Assorted stuff I do sometimes: Lemuria.org
I will document that piece of code later so that I remember why it does what it does.
"I'll have sex later."
CLI paste? paste.pr0.tips!
Oh.
I get it.
That means I'm not a programmer.
"My code is self-documenting, I need do no more."
or another one I really love "this will never happen (so I do not have to prepare for that)".
"Everyone uses the American Date format, that is MM/DD/YYYY", 'nuff said
Well, 10 minutes after the upgrades, the install of the new service, the hard reset of the router, the changes to the firewall ... ... this month.
Currently only had one 10 minute job that's hit the day 3 mark
Red to red, black to black. Switch it on, but stand well back.
Where do you draw the line on being an engineer? Seems like a good topic for a discussion.
I think of myself as an engineer, but then again I work at a pretty low level (C/assembler, no OS) and do hardware design too (design, schematic capture, PCB layout). I engineer whole systems, engineer firmware from the ground up.
The desktop guys... Well, some of the stuff they do is just plugging modules together. But they also build stuff, like web platforms, and have to know how to assemble the modules and write all the glue code. Maybe it's not so different from when I use chips made by other people, rather than building op-amps and microcontrollers out of transistors.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
I honestly can't remember the last time I used an explicit GOTO. That said, exception handling in most programming languages seems to actually be worse and I've used that.
Some time ago, someone proposed a spoof programming language, whose name temporarily escapes me, that included just about every bad idea possible. This included a "COMEFROM" structure that replaced GOTO - instead of marking where you wanted the jump at the location of the jump, you instead marked at at the location you jumped to.
Guaranteed unreadable. Worse than GOTO. And, hey, guess what, that's pretty much what exception handling is in 99% of implementations. The only way around it is to put one statement, and one statement only, in your try { ... } block, and who does that?
You are not alone. This is not normal. None of this is normal.
i like my job...i like my job.
Whats the deal with nulls?
While I can attest to the accuracy of the other 8/9 issues causing extended bouts of hair-pulling stress, I've never found nulls be problematic.
I mean, sure they have been a source of errors while developing, but dealing with them is just as aspect of dealing with function boundry conditions, and whether you do it via bools, nulls, exceptions or whatever, it has to be done.
*Doffs Colander*
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
Interesting way of defining it. For me I certainly do have to consider the physical world, even when writing firmware code. For desktop... Well, we mock patents that are just something that happens in the real world by "on a computer", so maybe building virtual stuff counts too.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
In the US, if you want to be a mechanical, or civil, or electrical, or plumbing engineer, these are the rules you generally have to follow.
- you go to school and eventually graduate
- you may have to serve as an apprentice (in my state, electricians serve a 5 year apprenticeship)
- you take an exam that's created and run by the state government in which you want to practice (not by a vendor)
- if you pass the exam, then you ask the state, not the vendor, for a license (probably some money involved here too)
- once you're licensed, then you're an engineer, unless
- the state finds out that you aren't following the state's (electrical / civil etc.) code regulations and pulls your license. Then you're no longer an engineer. And by the way, good luck finding your next job.
So whether you're an engineer or not depends on the state government, not a vendor or a school. This also provides more global skills. For example, a plumbing engineer can spec out either a Moen or a Delta faucet for a design. Could a Cisco engineer spec out a Juniper switch? Maybe...or maybe not.
When I was getting my degree (90's) the ACM wrote about the issue of whether software could truly be called "engineering" or not. Two things that they pointed out were that (1) in a couple of US states, it was illegal to call yourself a software engineer because you weren't licensed by the state, and (2) a lot of mechanical etc. engineers are pretty PO'd at the software industry because any fool can call himself / herself a software engineer without having skills, practices or state certs to back it up. Both point to a level of respect and trust in the skills of the person who puts "engineer" in their title. Would you go to a doctor who didn't have a state license? Or use a lawyer who wasn't a member of the state's bar? Probably not, because you don't know if you can trust their skills. A state's "engineer" stamp is a similar scenario: "this person is trustworthy in their trade and their opinions deserve respect."
"Java is fast"
What is generally not a lie, though, is "Java is fast enough".
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
I definitely do not like programmers with small pricks.
They usually do not know what they are talking about. They don't understand the business, the customer, the product, or the technologies in use. But they have a stack of certifications.
I'll see your senator, and I'll raise you two judges.
Why would this be a lie? [...] Even when I was junior I was earning the equivalent of about $60,000 USD, but the development I was doing with very little input from anyone else was directly pulling in over half a million USD in sales.
I highlighted the lie he was talking about in your statement. If there was really very little input from anyone else, you really should have went into business for yourself and made that half million dollars directly. But my guess is your work required your company's existing products/services, clients, marketing, client services, business processes, etc to make that $500k. You might not have needed many people on your team, but there was still a huge infrastructure put in place by your employer to attain that revenue.
Your value is more related to your replacement cost, and the extra value you bring in as opposed to your potential replacement. If another programmer making $60k per year could have also wrote software that made your company $500k, then you were worth $60k. It should be noted that this is no different than the value your employer's goods and services have in the marketplace. The value is in comparison to alternatives in the marketplace, not simply the ROI the buyer can make on the purchase.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
Remember that stat, that 25% of women in colleges have been sexually assaulted? How initially it seems unbelievable because, hey, you wouldn't, and I wouldn't, and most men you know wouldn't, so how can that be?
And then you found out that it was unbelievable because it was a lie?
One office I worked for had such a person
Nothing helps a lie along like a nice little one-off anecdote, am I right?
But the idea it's limited to SV is absurd
It's not limited to SV but it's rare outside of there. In SV it is pervasive. If I were a woman I would stay far away from SV if I valued my mental health. There's plenty interesting stuff going on outside of SV, and then you also avoid being in a huge bubble of groupthink that has fifty Snapchat clones getting funding.
But if you are a women and want a lot of money, suck it up and take SV for all they are worth. After 5-10 years you could probably retire for life if you play your cards right and change companies often enough.
"There is more worth loving than we have strength to love." - Brian Jay Stanley