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?
That they never GOTO work.
"National Security is the chief cause of national insecurity." - Celine's First Law
i kin k0dz3rz!
"This system will cover all cases" and any paraphrase of AI being right around the corner.
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."
We can put it right into production.
"One more compile then I'm going to bed..."
Seven puppies were harmed during the making of this post.
"I'll fix it later"
... 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."
Pretty much every widely used contemporary language has grown so many features there are always unexplored corners, and sometimes whole disciplines, that any given programmer will never utilize or understand fully.
I'm a better than average programmer.
Who ordered that?
Rather than just a programmer.
...I don't smell anything.
2. Yeah, the girls will for sure find this Batman shirt cool.
3. No one will notice my sandals. Where are those black socks?
See subject line.
It's "the Sierra". Singular.
The real "Libtards" are the Libertarians!
It compiles, so it has to work. Right?
"Good programming discussion is found at Slashdot"
"Rust will replace C++"
I once had a newbie programmer tell me that we could skip the code review because he wrote bug free code. I thought he was joking until he got insulted when I laughed my ass off.
That one's my favorite, and I run into it all the time.
Yet so many poke with two fingers.
//TODO
Sure you will. It's going to be there forever; and future developers will surely comment on it, and probably wont improve it.
Thus it'll be fine!
"The code is self-documenting!"
Anons need not reply. Questions end with a question mark.
"I'm Good Enough, I'm Smart Enough, and Doggone It, People Like Me!"
I tell myself that all the time.
You meant, of course, discrimination FOR women:
http://www.news.cornell.edu/stories/2015/04/women-preferred-21-over-men-stem-faculty-positions
Ha Ha Ha Ha!!!!
as soon as I get this working.
One day, a Slashdot /Soylent/The Inquirer article will point me to silver bullet tech that'll make all this wasted time worthwhile.
Yes sir, I understand. You know exactly what your talking about, you should go fill out your Gantt Chart.
It's ready four times faster than it really will be, then two times faster, then 25% faster. With lots of luck it will be ready then, unless a requirement change bump the time table eight fold into the future. Then it will be ready two times faster than it will really be.
All units pass. Who needs integration tests/functionality tests/load tests?
It will get better.
Fortran is a dead language.
Just because you are paranoid does not mean that no-one is out to get you.
... and that last 10% will take no time at all!
Validate your inputs!
This message brought to you by concerned cosmic ray detectors everywhere.
The truth is that some part of whatever system you're thinking about is almost always suffering from errors.
I didn't change anything that matters.
I know I tested that.
That shouldn't matter for this case.
I'll fix that later.
This should only take ten minutes and fix things.
The hardware upgrade will fix all the performance problems.
"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
"Eh, I'm not worrying. I'm not replaceable."
than the people paying for it.
Ultimately software is supposed to solve a real world problem. Its a means not an end. If you focus on writing the greatest, most stable software of all time and the company goes bankrupt around you because you never released and you feel it doesn't reflect badly on you - after all your code was perfect- than you are lying to yourself.
**Life is too short to be serious**
One in a billion is every few minutes before we start talking about networks. Your one in a million bug happened already.
... not just for code.
Yeah, so could I. And so could literally anyone else, if they only had to think about a single use-case.
But sooner or later, any non-trivial code will be taken outside its comfort zone, and that's when you'll miss the function that's actually been, y'know, tested
1 is prime, 3 is prime, 5 is prime, 7 is prime, 9 is prime ...
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I have honestly sent out software with a 1 page manual and have someone ring me up about a question that is answered in bold at the top of the page.
But it always does if you have enough users.
Everyone goes by first name, last name
I calll bullshit. There's a HUGE difference between positions in education and in industry and commerce.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
they replaced me with.
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>.
I'm a better programmer than everyone else so of course I'll get a promotion and a raise.
... so I don't have to write defensively."
or the opposite extreme
"Someone may re-purpose this for [insert laundry list here] so I better spend 10x the effort to create perfect code, never mind that it will blow the budget and make the product too late to market."
For the newbie programmer:
There are times when you do NOT need to write defensively. There are times when you must strive for perfect code at the expense of time and money. Most of the time the best approach is somewhere in between. With experience, you will begin to learn which times are which.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
I like the lie that the shorter and pithier a statement, the truer it is.
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
"Null is acceptable"
Yes null is problematic. What's the solution? Some languages (like java) allow you to use notnull annotations, etc, but what do you do when something went wrong in a function and you don't have an object to return? Sometimes you can just abort (I'd rather have a nice core dump than a messy memory bug), but this is not always appropriate. You can use exceptions, but exceptions come with their own problems that are worse than NULL pointers in many cases. So I would say NULL is acceptable (not good), when the alternatives are something worse or nothing.
"Human relationships can be codified"
They absolutely can be codified. Geneology software is pretty good at doing just this. It is not a hard problem. Even the article suggests that the rel problem is that the software may not properly reflect local laws due to ambiguities in the laws. If the title were "Ambiguous laws written by politicians can be codified", it would be a well accepted fact rather than a lie.
...There will probably be something interesting to read on Slashdot.
And read the whole damn thing, or 3/4 of it by the end of the month, then I'll be up to speed on the new platform.
Writing software for the military prevents war and terrorism.
"After x is done I'll have more time and things will be different"
"I'm not standing on the deck of a sinking ship"
"One day they will pay me all of the money they owe me"
"I'm the last one left with this obnoxious drunk friend and it's somehow my responsibility to make sure they don't try to drive home"
"I am very productive, do a lot of work and don't spend my day killing time and posting nonsensical rants on Slashdot"
I'll add some error handling to this catch statement later......
Names are mostly the same.
This field will be "enough."
Everyone around me is an idiot, I am the only one that can solve this with technology.
Things "work." They're barely holding together as it is.
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.
"The braces belong on the same line as the function sig/if statement/etc."
"Whitespace should be an integral part of code structure."
Now I will duck and cover.
No. No you won't.
and it works.
What is this, some kind of sting operation?
As someone that's lost nine weeks of vacation time due to accrual limits, I always keep thinking I'll be allowed time off. My company is great at paying lost deposits on vacations, but after working here for 23 years and not being allowed a single contiguous week off, I'm getting pretty pissed off about that. They let Indians take two or three weeks off contiguous. I understand why since their plane tickets are so expensive and the travel time is so long, but it sucks being an American and having to work to cover their time off. A friend at Microsoft said they internally call that "vacation inequality." Foreigners get time off while Americans are denied.
...and come back and (clean it up / refactor it / pay off the tech debt) later.
When it comes to coding, pretty much any statement that includes one of those words is wrong.
Those lies don't just apply to programmers, but also to mass media reporters:
(There is only one answer): Is it true you want to hurt the poor people by blocking the raising of the minimum wage?
(Numbers are accurate): The economy is doing great, the unemployment rate is only 3%!
(We're in control)...
It works on my machine
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.
Enough said.
"This framework I'm writing will make it easy for new programmers to understand and modify the system."
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
You can safely skip the article without missing anything. I stopped reading after, "Relationships Can Be Codified" because I realized that the author of the article seems to have very limited programming and design experience. All of his examples up to, and including, that point are elementary issues with simple solutions.
...get some ammo to discredit my point of view in our next meeting.
Not checking the return value on malloc() since most programmers know that malloc never really fails on a modern system with overcommit.
Nobody will ever do that.
"The company cares about my well being and if I work 80 hours per week to complete this project I've poured my heart and soul into, it will all pay off in the end and I'll be a well paid rockstar and get my fair share!"
"Shareholders really care about me and appreciate my hard work."
How I dress doesn't matter.
If we completely rewrite this old, messy, patched-up code, the new code will be better-architected, well-documented, and bug-free.
....... a sure sign of lack of discipline ;)
also described as: "I can keep working as a software developer as long as I want to".
Why is Snark Required?
Seems like the article is mostly lies that database programmers tell themselves.
What do you mean they cut the power? How can they cut the power, man? They're animals!
My work is valued
Here's one of those not-what-you-expect lies that you learn you're telling yourself after a year or so: This code will be used everywhere forever. It will be totally worth it to make it super flexible and super maintainable.
What do you mean they cut the power? How can they cut the power, man? They're animals!
EOM
love is just extroverted narcissism
"The purpose of this line of code is pretty self evident. There's no need to add a comment about its function."
Along with "I never start a compile because I wanna surf the web".
sigh
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.
.... if you haven't worked with any other decent programming language
My app is easy for a non-technical person to understand and use.
My code is easy to understand and modify.
She's probably thinks intelligence is sexy.
*** *** You're just jealous 'cause the voices talk to me... ***
This app is gonna make me millions...
1. "Good Enough" is "Good Enough" - b/c it isn't.
2. That'll always be True/False.
3. It'll never assert.
4. That'll never happen.
5. It's secure b/c we tested all the user inputs.
The absolute biggest lie some programmers tell themselves is "Linux is good". The second biggest lie is "The GPL is a good license"
"I'll just use this library until I write my own"
"I'll optimize this function later"
"TODO: Refactor for future merges"
"Just another 5 minutes until I find this bug I'm looking for"
That'll only take a few minutes.
nt
... It Will Never Go Into Production.
AC
I AM GOD!
This condition will never happen
...simple program done on time, on budget, and with no bugs.
* Every user speaks my language (so my text can all be ASCII), So Y and N are always fine. So everyone's address includes a city.
* It doesn't matter that error codes are meaningless, or that the same catch-all message appears for several different conditions.
* Every user will know what "enter a 6 character alphanumeric field" or "please assign a unique key" means
* Using technical jargon in user interfaces is good, Plain English is for WIMPS
* it doesn't need documenting, it's obvious how to use it.
* The website doesn't need a description of the product, everybody knows what it is
(So let's make the first page a user will encounter a list of the change log, or a name-check for everyone who worked on the project, instead)
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
I am the best developer for my domain.
Probably thousands are better than you in many different ways and focus areas, no matter who you are.
However, nobody has exactly your ideas at this time, and you don't even compete on skill..
Epic fail...
Q.E.D
" I can write a Python script and get grandma's printer to work, so I am a genius in all areas of life, particularly politics"
see subject
they are alternate facts
And you take it up the arse, sorry, up your sissy pussy.
or the alternative: // FIXME
"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've been planning badly for decades and know to double my estimate; this time my planning will be close to the truth".
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
> 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 fully understand the problem"
It is the lie 99% of all coders tell them selves.
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'm making the world a better place."
"This can't be used for evil."
Or for the government employees...
"Good thing this will never leak to the public!"
Users love tray bar icons and my application needs one, together with a service to keep it alive.
We are agile here.
"Object-oriented programming is better and easier to maintain"
They [the Unicode consortium] also toss aside certain emoji, effectively denying someone’s feelings.
Because nobody ever felt anything before there was an emoji for it.
"functional purity creates less buggy code".
That's a subset of the root lie. Re:I can get that done by...
The root lie is, "I know what I am doing."
Look at the unholy mess that 99.99999% of software is. Not the five-9's you are looking for. When applied to software, Sturgeons law is recursive.
Reason: Software is the most complex machine humans have ever created. And it is designed, built, documented (ha!), and maintained by unlicensed, not-standardized, para-professional "injuneers".
The entire software industry is a fraud, based on hubris and just enough knowledge to be dangerous.
I can trust the libraries I use.
I can trust the linker.
I can trust the hardware the code runs on.
Oh.
I get it.
That means I'm not a programmer.
Most ironic of situations. You fix a reported bug, and shortly after get reports from customers asking for the bug back.
"My code is self-documenting, I need do no more."
No ... you usually can't. Unless you don't look at your code for six weeks, and then read it and wonder what exactly you were thinking.
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.
This is cheating.
Everyone who has written a language is expert on it, and the worse the documentation is or the more non-intuitive side-effects there are the greater the difference will be between the developer and the user.
It's when you meet a developer that looks at something a user did with the software and say "Wow, I didn't realize you could do that." that you know that the developer did a good job.
So we must chase them and recruit them.
My all time favorite. The idea that more tests solves the problem.
or another one I really love "this will never happen (so I do not have to prepare for that)".
I will be able to adapt to the legal environment, I'm a great negotiator, someone will lobby the government to look after my interests, that aside they really need me.
Someone has my back
My ism, it's full of beliefs.
"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.
is better than C
Almost all the +5s I've seen are the excuses (not lies) that I hear from the less competent and/or lazier workers. (Note, I said workers, because this doesn't only apply to programming)
I'm going to attack on the "deadlines" ones specifically though because it hits home the hardest for me. I've had deadlines where everyone around me, seniors et al, laugh and say it's impossible, and I just think about it a bit and go "Gee, if we all were actually collaborative and proactive about it, we'd actually achieve that deadline without much stress."
Then I realize those same people spend half their days either chatting with others or tackling problems in a grossly inefficient manner. This isn't always the case, obviously, but you need someone who gets annoyed and takes the reigns when it does happen. I tend to play that role, but I also almost end up burning myself out and morph into one of those lazier workers in turn. Not fun.
tl;dr? Too early in the morn to summarize, read it or move on.
I tend to rant.
Here is my story. greatful
My wife was diagnosed with a cancer, ( before i learnt of Rick Simpsons oil / RSO ) the hospital said to do chemotherapy and radiotherapy.. she did.. and went through a lot.. but no cure, after a while the doctors said the cancer was spreading and we could look for alternatives.. i searched the internet and found out about the oil.. asked alot of questions.. watched the videos etc.. we made the oil our selves but it couldn't just work out we were doing more harm than good and the cancer was still there spreading, i searched more on the internet i found a testimony on how a lady got the oil via an email, ricksimpsoncannabisoil96@gmail.com immediately copied the email: i wrote to this very email ricksimpsoncannabisoil96@gmail.com and in an hour later i got a reply back asking me some few questions, and enlightened me on how to get the oil in the next 48hours, i placed my order and in the next 48hours the medication oil got to us. immediately my wife started using the oil, it been two months now, since my wife has been using the medication oil and the cancerous problems are gone this very fact was clarified by the doctor.
i put up this piece of testimony for the sake of those once who need this oil to please don't die in silence their is a cure for your cancer today email: ricksimpsoncannabisoil96@gmail.com and get the oil.
Lie : "Neo in is cubicle was not paid by a program"
"C++ and C are quite similar."
I'm a skilled worker.
I won't be replaced by someone in the third world with an internet connection.
Java is an acceptable language.
Error messages no longer need to contain information.
There is nothing wrong with Java.
really liked me!
That's an edge case - it won't ever happen in the real world!
Mudge
In theory, theory and practice are the same.
In practice, they're not.
Nobody will ever need more than 1MB RAM.
... that slashdot is for stuff that matters[tm]
... that they actually know how to fully parse and validate an email address
... that they matter in the medium to long term to anyone outside of a very small circle (typ. family)
... that the next generation will live in a better world.
Perl actually has excellent documentation, written by the the authors/developers of the language.
"Those security guys worry too much!"
I'd be filthy, stinking rich if I had a dime for every time a developer made the same well-known security mistake over and over and over even after their code was pen tested and it was pointed out to them with a fully documented POC and screenshots.
Sometimes the "writing on the wall" is blood spatter...
Whitespace is significant
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.
Javascript is not THAT bad.
(This lie is the only way, I can continue work).
Who'd care to exploit a flaw in my code?
"Our model changes too frequently, we can't use a relational databas, only JSON will be as versitile as we need". Lies...
I'll add that in version 2.
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."
The documentation always matches the code.
The program will scale linearly.
The user will wait for the response to finish.
There will always be enough memory to run this.
I don't need garbage collection because I free everything I allocate.
I really need all this stuff to display in the same screen at the same time.
I know how to do UI so I don't need to follow any conventions.
No one will ever use this the wrong way.
My estimates are accurate.
We can just bring in another coder to get this out on time.
Every bug report takes the same amount of effort to fix.
Everyone on the team will learn and use my preferred language even if they don't already know it.
The IDE will help me to code better.
The debugger will help me find all the bugs.
Everyone loves the way my code looks as much as I do.
My CS degree proves that I know how to code.
The most important thing is to make the code run as fast as possible.
Most frequent lie I tell myself or others.
Job offer.
1 is prime. 3 is prime. 5 is prime. 7 is prime. 9 is simply experimental measurement error. 11 is prime. 13 is prime. . . .
Manager: how do you measure leadership?
Programmer: with a suitable test insturment!
I'll see your senator, and I'll raise you two judges.
"This is just a temporary fix/hack/solution"
See my subject + "read 'em & weep" http://www.theregister.co.uk/2017/03/10/swift_pops_top_10/
I used it to create APK Hosts File Engine 9.0++ SR-7 32/64-bit https://www.google.com/search?hl=en&source=hp&biw=&bih=&q=%22APK+Hosts+File+Engine%22+and+%22start64%22&btnG=Google+Search&gbv=1/ to give users more speed, security, reliability & anonymity online using what you have NATIVELY in the IP stack itself, doing more for far less vs. other "so-called 'solutions'" that are full of bloat inefficiency or security issues (dns/antivirus/browser addons).
APK
P.S.=> It's my personal favorite programming language (& I code a dozen of them since 1982) that took me from MSVC++ & VB when it beat BOTH overall soundly in 4/6 peformance tests (even doubling & almost tripling C++ in MATH & STRINGS work, which every program does) in Sept./Oct. VBPJ issue "Inside the VB5 compiler"... apk
Many mentioned under-commenting, but don't forget the waste that is over-commenting. I want to scream every time I see a function (e.g., a graphics function) that takes two variables, x and y, and someone took the time to comment those as "the x coordinate" and "the y coordinate". No kidding!!! Or if you're using ghostdoc, they get commented as just "the x" and "the y". When the best comment you can come up with adds no information, just skip it. Over-commented code is not better in any way.
I'm not wasting my time... :-)
I'm reading Slashdot
money / power is happiness & i can trust this corporation
"Eh, it's secure enough. They've got a firewall, right?"
"I can finish that in a week."
The Users will never do that.
My code doesn't need documentation
"Hmm. I am to metaphor cheese as metaphor cheese is to transitive verb crackers!"
"Gender/minority hiring quotas are the way to fix discrimination."
A thousand times this!
I thought I was pretty slick with Perl, until I worked at a Perl shop (they DO exist!) with people who are core committers to things like, OpenAFS, Postgres, and created things like Bucardo because they were just looking for a way to do something better for a client.
I thought I was pretty good at Postgres, until I went to the Postgres Open and over dinner asked the guy who wrote Slony why he'd done something, only to find myself nodding politely as he responded with a half hour explanation to which I could only think to myself, "Yeah...uh huh...I know some of these words!"
I am a far better perl developer, have a far better understanding of Postgres, and most importantly much more humility about the depth and breadth of my own skillset for having had both experiences. When I dealt with a team of developers at couple jobs ago, most of whom were working their first job out of college, all of whom figured they knew better than I did about how things should be done, it really sank in how bad the problem of ego is getting in CS/IT academia. Humorously, it took me dropping their dev database from a browser to get them to accept that maybe the people who came up with the OWASP top 10 know something their professors didn't teach them...
The process can be automated.
https://xkcd.com/1319/
- If I code what's in the spec, everyone will be happy
- that bug can't happen, it's just impossible!
- this code is really simple, I read it over, and it's fine -- no need to bother setup a test case for it.
- let's setup some best practice guidelines, for our own benefit. Mgmt won't make them manatory -- because it's obvious that these are only guidelines and there are times when they don't apply.
- computers are fast, so we don't need to worry about how we write this...
- I should optimize my code (generally, I see people think this, about code that's not inside loops, and sometimes is executed rarely.)
- Why bother optimize this code? (and, in reverse, I see people say this, about code that IS in the most important parts of loops, and/or is dealing with how we grab data from disk servers - resulting in serious latencies)
- comments are for wussies
might get laid someday?
"I can do this in two weeks."
It's only a demo ....
"Hey, it works on my machine"
"This doesn't even really need testing."
"Users will never use it that way."
hookers and grits.
That they are a "Full Stack DevOps Engineer". When I hear that I die a little inside.
2 is prime, 3 is prime, 5 is prime, 17 is prime, 257 is prime, 65537 is prime, 4297967297 is prime...
"If I write this program in an easily extensible way, expanding this later will be a breeze."
Lots of classes, rich inheritance trees, broad project on top of a robust framework, making adding extra modules fairly easy. Your program is clean, well-documented, and has a logical structure, all according to best practices. It's also about 4 times bigger than it would really need to be, it takes 3 times as much RAM (primarily due to loading all the neat frameworks and libraries that you used "not to reinvent the wheel" even if you only use one or two simple functions from these), but who cares, this is the modern paradigm, and everything is automated and works so smoothly you can be nothing but proud of it. Now just to support it, fix some bugs, and implement extra features.
Then the new requirements arrive, you look at the email, you look at the top level schematics of your system and you realize, with a sinking feeling, that you never imagined the system would need to be expanded *that* way. And that this particular framework doesn't support this approach, and never will, because its authors decided they never plan to support it, or that the target platform doesn't support, and can't ever support the kind of libraries you use, or that you currently depend on a piece of hardware to do a job which you will need to write from scratch, or the new legal requirements (which are not disputable; new law says so) go completely against your system philosophy, which provides equivalent but completely different functionality, or the essential library just has been discontinued, and new security holes have been found in it...
Or at the very least, you realize that a feature that amounts to ten lines of code performing a really simple tricks requires you to create ten different files, two thousand lines of code, config and extras, and modification of several existing files, because the way the extensions of this type are applicable is writing a plugin which is a separate project with a whole non-trivial instantiation of framework, build system, security, and compatibility with your smart dynamic plugin loading mechanism. What would amount to pasting a 12-line function called once per tick from the main loop, amounts to a three-week project building the plugin/wrapper for that 10-line snippet.
You CAN NOT foresee future requirements. You CAN NOT plan all possible future extensions ahead of time. And the more you plan for, the more "flexible" you try to be, the larger and more rigid your project becomes in areas you failed to foresee, and the harder it will be to adapt it for these.
Yes, leave hooks for stuff you have it on a good authority WILL happen. Do not try to plan for every eventuality though. Write good clean code that does what it's meant to do, and doesn't try to be ready for anything else. It will be *easier* to expand once the time comes.
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
"This time will be different."
"A rewrite will fix everything."
"This will make it future-proof."
"I'll go to bed after I write this last part."
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
"When someone above asks me to do something I know will be problematic, they will ultimately take responsibility for that decision and will not use me as a scapegoat to protect their own ass when the shit hits the fan. And even if they were to do so, my reams and reams of CYA documentation that document their ridiculous decision will serve as a magic talisman that prevents me from getting fired."
To be fair, handing out jobs to women for being minimally competent doesn't really sit well with people that earned their position with years of effort.
For sure, they get annoyed.
It harms women
But here's the thing - it doesn't harm women. It harms people's respect for women as competent developers.
But think of it from the standpoint of the woman. Were I a woman, and people thought I was incompetent because of diversity quotas, I would laugh and wave my arms wildly in my pit of extra money I was making.
Respect of others is only valuable when you can use it as leverage to get things like jobs you enjoy. But currently being a woman has far more leverage in getting hired at technical jobs than does respect or competency. So why care what people think about you?
Plus honestly in the end after a while people will respect you for what you have done anyway, no matter what they think at first. So it's not like I'd slack off if it were me, thinking about it from a very long term standpoint, not to mention maintain an internal measure of respect which is important for a strong feeling of self-worth.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Oh shit, what's a leap second?
“Common sense is not so common.” — Voltaire
0. I don't like sucking cock
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.
"After the three months it takes the team to refactor, adding zero new functionality during that time, the new refactored code will make adding new features trivial, and all of our programming lives better "
Of course what you say is true! There is no way I could have experience with all of those things in a mere 30 years! If someone has 5 or 10 years in the field you might have a point, but beyond that a truly talented Dev will have experience in all of that as well as virtualization.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
"The operations people are idiots and the servers suck. It can't possibly be the fact that I have a rudimentary grasp of SQL and don't know what an index is."
"I love my job."
Programmers think that their jobs will always exist.. I think we've got another 20-25 years before the bulk of programming jobs have vaporised in the face of AI.
Just so I never bumped into those legal issues. Before that it was "Systems Analyst". We use "Software Developer" for the same reason, and it covers a lot of ground.
Everyone misses this one (though the source of the lie is, in my experience anyways, the false assurance of a user):
"This is a One-Off problem, do the minimum to solve it."
Yeah, I've found that those one-off problems come back. Over and over again! And because you solved it once, you just became the expert, and furthermore your minimal solution keeps getting pulled back into production.
"One-Off" problems are more likely to be irregular use-cases, in my experience. They mostly have a duty cycle of greater than one year but they will be back, like a zombie springing back to life after you planted them in the graveyard.
So "the bug just went away by itself".
"A user would never be stupid enough to do that."
Imperial as used by English speakers means old British Empire units.
American units are most correctly called US Customary units, as they are not the same. But then, just to piss you guys off, we usually call our not-quite-Imperial units "English units." :-)
I'm the best there is at what I do, but what I do occupies a narrow niche.
My sci-fi novel, Ghost Thief, is now available from Amazon.com.
"Covering the happy path is good enough for now" or "covering normal people is a good start."
Take a look at Facebook serving pictures of people's children to them in festive frames even if those children have died during the previous year. The damage we do on the edges can be larger than the good we do in the center.
It's funny because 1 isn't really prime.
(It may have been prime according to some old definitions, but not any more. Factorizations are not unique if we include things like 2*3, 1*2*3, 1*1*1*1*1*2*3, etc. so it's better to leave out one.)
Escher was the first MC and Giger invented the HR department.
... so way does it suck when it is used in production under load? -- because you didn't do any realistic load tests that's why!!
'Requirements? No worries - just build it first, and I'll give you my feedback.'
"Mathematics is an exact science"
and
"Miracles do not happen"
It's a feature!
I do not need to worry about cache organization.
I've heard it has to do with the language barrier overseas. Director's and contractors here want to be able to describe the type of work they want done and the best way to do that is in the English language they're used to. Communicating that with a programmer from India presents a challenge and so for that reason a well spoken English-as-a-first-language developer can usually be paid better.
"Users won't notice". ;) Oh yes we do.
"It is no measure of health to be well adjusted to a profoundly sick society." - Jiddu Krishnamurti
Spend some time bonding with peers in college whether it be drinking and doing drugs or something more wholesome. These guys and girls will be your friends for life if you nurture the relationships, and well educated friends means good opportunities. I didn't realize at the time that they would be more important assets than the education I was getting there.
The firewall is keeping my program from running. /dev.
I'll add security later.
The security routine is stopping it from working.
Let's disable SELinux, then it'll work.
I'll just su to root to delete these files. I'm not really in
Others:
I don't need to test this code.
VI is a good editor.
Ruby is a great language.
Java is a great language.
I don't need to worry about freeing memory. Modern systems have more memory than we'll ever use. (java actually does this last I knew).
I don't need to worry about metadata.
My favorite - "Things will naturally just work out."
"Short term" means 5+ years minimum. MINIMUM.
"...I didn't change anything!"
(Deep scifi narrator voice or Morgan Freeman) IN THE YEAR 2000, all audio and video will be ogg vorbis. All documents will be in an open format. Micro$oft will be no more. Artificial Intelligence will be our friend and not the privacy cracking monster it's always been since the 1940s. Cloud computing becomes easy for everyone to do and not just a farce for Silicon Valley to use open source to destroy open source.
We'll definitely be able to reuse this module in our next product, no hacks or shims required.