If you can read this, either the style sheet didn't load or you have an older browser that doesn't support style sheets. Try clearing your browser cache and refreshing the page.

(IT World)   Ten obviously untrue things programmers tell themselves, aside from "That chick in accounting totally wants me"   (itworld.com) divider line 140
    More: Misc, software engineers  
•       •       •

7220 clicks; posted to Geek » on 29 Nov 2012 at 9:56 AM (1 year ago)   |  Favorite    |   share:  Share on Twitter share via Email Share on Facebook   more»



140 Comments   (+0 »)
   
View Voting Results: Smartest and Funniest

Archived thread
 
2012-11-29 09:19:08 AM
Wow. Author didn't put alot of thought into that list. I wonder if he was playing Halo while writing.
 
ZAZ [TotalFark]
2012-11-29 09:24:03 AM
It was my officemate who wanted that chick in accounting. I wanted... actually I forget what she did, but it wasn't accounting. And she totally didn't want me.
 
2012-11-29 09:38:43 AM
I have heard at least 7 of those in various meetings/converstations over the years.
 
2012-11-29 09:44:42 AM

Diogenes: Wow. Author didn't put alot of thought into that list. I wonder if he was playing Halo while writing.


Yeah, that was incredibly lazy.
 
ZAZ [TotalFark]
2012-11-29 09:45:50 AM
I had to deal with rewriting this awful unmaintainable program where "correct" behavior was defined as "whatever version XYZ of this program did on some large input." New version never did work "correctly." The closest thing to a spec was an attempt to define the grammar, but not the semantics, of the input language. Other than Halo I could point to most of the things in that article.
 
2012-11-29 10:04:27 AM
I don't know. I've mentally solved some crazy issues with an AI program I wrote in college while playing Tetris. Sometimes letting eyes focus one something other than a block of code helps your brain figure out problems.
 
2012-11-29 10:05:35 AM

minoridiot: I have heard at least 7 of those in various meetings/converstations over the years.


I hear this sh*t just about every time a new version of our software drops. "Oh it's fine, the customer doesn't want to pay for the sh*t they actually said they need, so make them work with this instead."

Um, okay, I guess I have to tell the client (again) that the feature you promised for 2 years, and is finally coming out, doesn't work as advertised.

/Office Space had it right. Engineers are terrible at dealing with people.
 
2012-11-29 10:09:39 AM
He forgot, "The shiat I code is more cool/difficult/complex than 98% of everything out there!!".
 
2012-11-29 10:10:07 AM
I take offense to this one: "I know what the client wants - I know what the client said, but that's not really what they want."

Because knowing how to tease out the real requirements is one of the main keys to success in this business.
 
2012-11-29 10:10:56 AM
Umm...aren't all SQL statements hand crafted? I mean SQL stands for Structured Query Language, implying that somebody is going to write, by hand a statement that retrieves, updates, inserts or deletes data on the database.

I guess you could use an SQL code generator, but really aren't most apps using a persistence framework like Hibernate? Who writes SQL anymore?
 
2012-11-29 10:11:09 AM
The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.
 
2012-11-29 10:14:24 AM
It's not a bug; the user is doing something wrong - The code is doing what it's supposed to be doing; users are idiots.

This is probably true more often than not.
 
2012-11-29 10:14:26 AM
I think the points that he comes up with are silly and there was no effort to put in to it. However, his initial premise is spot on...programmers spend lots of time staring at code and they construct weird realities that make everyone look at them sideways.
 
2012-11-29 10:14:41 AM

Diogenes: Wow. Author didn't put alot of thought into that list. I wonder if he was playing Halo while writing.


Well, yeah, but he was totally thinking about the article while doing so.
 
2012-11-29 10:15:01 AM

Leeds: I take offense to this one: "I know what the client wants - I know what the client said, but that's not really what they want."

Because knowing how to tease out the real requirements is one of the main keys to success in this business.


My initial training was heavily focused on "Requirements Gathering." And yes, it is a technical skill. Filtering the nonsense out and preserving the required business logic to be implemented is a real skill. And sorely lacking in the industry.

CSB: I had to reengineer a tax compliance system for AT&T. So I interviewed the users. "How do you calculate this tax?" I asked.

"Well, we go into the legacy system, enter this number, and hit this button."

"No, I mean, what is the formula? What are the tax regs? If you had to calculate it with pencil and paper how would you do it?"

"Can you make the new screen light blue?"

[head banging on desk]
 
2012-11-29 10:16:47 AM
"I know what the client wants - I know what the client said, but that's not really what they want."

There is some, SOME, truth to this. Often the client doesn't know exactly what they want, but generally the coders aren't the ones to figure it out, which is why designers/HCI people exist. You conduct all sorts of interviews with people at all levels, you spend days and sometimes weeks watching people work, and you do ridiculous amounts of usability testing. It can be tedious but it pays off in the long run.
 
2012-11-29 10:16:57 AM

Slaves2Darkness: Umm...aren't all SQL statements hand crafted? I mean SQL stands for Structured Query Language, implying that somebody is going to write, by hand a statement that retrieves, updates, inserts or deletes data on the database.

I guess you could use an SQL code generator, but really aren't most apps using a persistence framework like Hibernate? Who writes SQL anymore?


I think it's meant to imply inline SQL. As in some dummy slapped some SQL right in the middle of the code instead of using a function or stored procedure.

But, then, as previously mentioned, lazy article author is lazy, so who knows what was really meant.
 
2012-11-29 10:18:07 AM
For me it's the frustration that comes with the fact that some things need to be done, and if done right, well...they'd be done right, saving a lot of time in the future and would not take much time to implement as there's updates to the files that are already needed.

The replies I always get:

"let's stick with how things are, because they MIGHT change later on", which the changes still would
a) not change anything towards any future changes
b)if it would change something, it would be in the right direction.

"we don't have time now, maybe later", with the fact that the updates being done require accessing the same files, taking maybe an extra minute to setup, and would result in the new structure being done and making things easier, faster, better, but somehow, doing the work twice is the way they believe is better.

Then I get the "what can we do to save time and get more done?" question... at which point I repeat the same thing, get the same type of answer... and I simply give up and must stop myself from palming my forehead... I'm paid by the hour regardless.
 
2012-11-29 10:18:49 AM
My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...

So yeah, I don't give a fark that it works on yours, unless you are going to carry it and your ass up to accounting and do the receivables for the 10 people that now can't work.
 
2012-11-29 10:20:03 AM

Slaves2Darkness: Umm...aren't all SQL statements hand crafted? I mean SQL stands for Structured Query Language, implying that somebody is going to write, by hand a statement that retrieves, updates, inserts or deletes data on the database.

I guess you could use an SQL code generator, but really aren't most apps using a persistence framework like Hibernate? Who writes SQL anymore?



It depends on your product. If it is extremely data intensive, you can't just bind everything and have nice easy little updates. At best, you can create a data class and bind to that but what loads the class is good ol' SQL (be it ADO or whatever)...and even then, your updates are most likely coded down to the insert/update.
 
2012-11-29 10:20:40 AM

abhorrent1: It's not a bug; the user is doing something wrong - The code is doing what it's supposed to be doing; users are idiots.

This is probably true more often than not.


What is the purpose of the code if not to produce results in the real world? If the code fails due to user activity then it's not well suited to its primary function. The business world doesn't care that your code is 'better' only that it works. If it doesn't work then it's not good code. It really doesn't matter why it isn't working.
 
2012-11-29 10:20:47 AM

Beta Tested: "I know what the client wants - I know what the client said, but that's not really what they want."

There is some, SOME, truth to this. Often the client doesn't know exactly what they want


Yes they do..
24.media.tumblr.com
 
2012-11-29 10:24:35 AM

bulldg4life: I think the points that he comes up with are silly and there was no effort to put in to it. However, his initial premise is spot on...programmers spend lots of time staring at code and they construct weird realities that make everyone look at them sideways.

 

www.jimpoz.com
 
2012-11-29 10:24:35 AM

ManateeGag: I don't know. I've mentally solved some crazy issues with an AI program I wrote in college while playing Tetris. Sometimes letting eyes focus one something other than a block of code helps your brain figure out problems.


i've been out in the mountains hiking when the solution to a coding problem came to me. just because he (and some other programmers) don't have brains that can do "background thinking" doesn't mean none do.
 
2012-11-29 10:26:08 AM

minoridiot: I have heard at least 7 of those in various meetings/converstations over the years.

This is a [hardware | database | network] issue, not a code issue


This is the one I always hear.

ManateeGag: I don't know. I've mentally solved some crazy issues with an AI program I wrote in college while playing Tetris. Sometimes letting eyes focus one something other than a block of code helps your brain figure out problems.


Yes. This is often very true with any problem you are having trouble with solving.
 
2012-11-29 10:26:48 AM

Marine1: The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.


One Word - "COBOL"

Also, "Give me another 20 minutes and I will have it fixed..."
 
2012-11-29 10:28:26 AM
When I'm playing Halo 4 reading Fark.com I'm thinking about coding, so it's like I'm coding.

/guilty
 
2012-11-29 10:28:38 AM
11. There is probably some interesting reading material on itworld.com
 
ZAZ [TotalFark]
2012-11-29 10:30:28 AM
He forgot, "The shiat I code is more cool/difficult/complex than 98% of everything out there!!".

I was disappointed to find the technique I was going to use in a 15 year old compiler textbook. I thought I was more clever than that. Then I thought, I don't need to be the first to invent it and it's great that it's so old the patents may have expired. Then I thought, just because it was known in the 1990s doesn't mean somebody won't patent it again today. Finally I decided, it's statistically certain that something we do infringes on a patent and it doesn't matter whether I add another to the pile by accident.
 
2012-11-29 10:34:43 AM
My take as a IT person going through school learning programming and having to write programs for many classes in many languages.

This code is self-documenting - I am guilty of this one. I have written many programs and rarely document them.

This is a [hardware | database | network] issue, not a code issue - I have always assumed it was a code issue first before anything else if I programmed it.

It's not a bug; the user is doing something wrong - This is a tricky one for me cause I have had bugs and I have had the user doing something wrong claiming it was a bug.

When I'm playing Halo 4 I'm thinking about coding, so it's like I'm coding - Not a Halo fan... sorry. But I do enjoy a good round of games as a break to allow myself to get refreshed when needing to write / debug codes.

I'm the only one who knows this code, so they can't lay me off - Never once have I thought that.

I know what the client wants - Once again, never thought that.

QA will find any bugs - Guilty of this one too when I am tired and angry

This fix is so simple that we can put it straight into production - Never encountered this because I only wrote programs for classes right now.

Of course this will scale - Same as above

I could rewrite this pile of spaghetti legacy code and save time in the long run - Same as above.
 
2012-11-29 10:35:04 AM
12. I will comment-up the code after I finish the coding part.
 
2012-11-29 10:38:17 AM
I once got a requirement to make an application backward and forward compatible.

I have to admit, I was a bit stymied on how to develop precognitive code.
 
2012-11-29 10:46:19 AM

Vegan Meat Popsicle: I think it's meant to imply inline SQL. As in some dummy slapped some SQL right in the middle of the code instead of using a function or stored procedure.


It can be useful sometimes. SQR(eporting), for example, requires you to process your query results row by row. If there's a write involved, that also means writing row by row, incurring network overhead for each and every row. And that can get rather horrific if what you're doing is ugly enough to require subqueries. (Peoplesoft's all-in-one database, for example, forces you into this almost as a matter of routine.)

Submitting it as an inline query means the server can deal with it on its own without you being underfoot, turning a 5 hour ordeal into an operation lasting less than a second, including network. It can be very worthwhile to use temporary tables for the worst of it.

Beta Tested: There is some, SOME, truth to this. Often the client doesn't know exactly what they want, but generally the coders aren't the ones to figure it out, which is why designers/HCI people exist.


Unfortunately, when the 'client/boss' decides he/she can forgo progs in the design phase, then overthinks the requirements and decides something is too complicated (to describe) and so goes with something simpler (on paper), or worse, holds back information (a required feature they think is best to tackle later), it can totally fark things up.
 
2012-11-29 10:46:54 AM
FTA: This is a [hardware | database | network] issue, not a code issue - Obviously, it's that recent database patch that's gumming things up, not my hand crafted SQL.

If you have code (any language) that has been working just fine for years then one morning, with no one making any changes to anything... yeah, it probably is a hardware or network issue.

I was a tester before I was a programmer, and one of the things you learn to do is figure out what changed to figure out what the source of a new problem is.
 
2012-11-29 10:49:24 AM

wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...

So yeah, I don't give a fark that it works on yours, unless you are going to carry it and your ass up to accounting and do the receivables for the 10 people that now can't work.



The only time I ever say this to a client is when they do something like this:

Client: "I ran the program, and pulled up the personnel list. When I clicked on a person, I got errors. But the person seemed to load. I then tried to give the person a schedule record and got errors when I tried to save. Could you fix this?"

Me: "You need to send me a screen shot of your errors and/or the text of the errors. I cannot replicate this here at my office and my attempts to do what you are doing work perfectly. I will look at the code but it would be a huge help to have the actual errors descriptions."
--------------------

Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.
 
2012-11-29 10:52:10 AM
It's not a bug; the user is doing something wrong - The code is doing what it's supposed to be doing; users are idiots.

Usually this is just "It's working exactly like the spec you gave me dictated." A lot of times people get so bogged down trying to dictate how a program should function, when what they should be doing is figuring out (and clearly explaining) what the ultimate goal is. Leave the how to the person whose builds these things for a living. If they have any use-cases they need clarification on they'll ask you.
 
2012-11-29 10:52:50 AM

burndtdan: If you have code (any language) that has been working just fine for years then one morning, with no one making any changes to anything... yeah, it probably is a hardware or network issue.


My rule of thumb: if one person's reporting it, investigate pilot error first. If a few people are reporting the problem, investigate their procedure first. If several people are reporting it, it's the code.

/ The solution to all three may involve reinforcing the code, or fixing the code, but odds are, the rule of thumb leads to the greatest understanding of the problem.
 
2012-11-29 10:53:41 AM
MooseUpNorth:
Beta Tested: There is some, SOME, truth to this. Often the client doesn't know exactly what they want, but generally the coders aren't the ones to figure it out, which is why designers/HCI people exist.

Unfortunately, when the 'client/boss' decides he/she can forgo progs in the design phase, then overthinks the requirements and decides something is too complicated (to describe) and so goes with something simpler (on paper), or worse, holds back information (a required feature they think is best to tackle later), it can totally fark things up.

Yeah, I have done that to myself when going projects for my classes. Forgot to take all aspects in or I was not team leader and our leader broke the project up and gave us assignments to write only part and hoped the parts worked together.
 
2012-11-29 10:55:58 AM
Ok last two for me...

I could rewrite this pile of spaghetti legacy code and save time in the long run - If only I wasn't so busy right now playing Halo 4 - I mean thinking through complex programming problems.

I've done this a lot of times in my current job (we had some really shiatty programmers here before the current team), with programs that needed constant manual intervention, and now they have all been running for years with little to no problem. You can rewrite the pile of spaghetti legacy code and save time in the long run.

I'm the only one who knows this code, so they can't lay me off - They're lucky I don't demand a raise.

We had one guy that knew the legacy system for years. The guy fell asleep at his desk almost every day, the CIO hated him, and he had no other particularly useful skills except knowing the legacy system (he wasn't touching anything new). The same month we finally turned the legacy system off, he retired. This happens.
 
2012-11-29 10:56:45 AM

MooseUpNorth: burndtdan: If you have code (any language) that has been working just fine for years then one morning, with no one making any changes to anything... yeah, it probably is a hardware or network issue.

My rule of thumb: if one person's reporting it, investigate pilot error first. If a few people are reporting the problem, investigate their procedure first. If several people are reporting it, it's the code.

/ The solution to all three may involve reinforcing the code, or fixing the code, but odds are, the rule of thumb leads to the greatest understanding of the problem.


If no one reported it for years, then one morning the entire company reports it, it's the network (or a server).
 
2012-11-29 10:58:34 AM

burndtdan: I'm the only one who knows this code, so they can't lay me off - They're lucky I don't demand a raise.

We had one guy that knew the legacy system for years. The guy fell asleep at his desk almost every day, the CIO hated him, and he had no other particularly useful skills except knowing the legacy system (he wasn't touching anything new). The same month we finally turned the legacy system off, he retired. This happens.


For some reason, I am reminded of Wally from Dilbert. The only reason Wally is there is because he knows how to fix Big Bertha when Y2K was about to strike.
 
2012-11-29 10:58:52 AM

Diogenes: Leeds: I take offense to this one: "I know what the client wants - I know what the client said, but that's not really what they want."

Because knowing how to tease out the real requirements is one of the main keys to success in this business.

My initial training was heavily focused on "Requirements Gathering." And yes, it is a technical skill. Filtering the nonsense out and preserving the required business logic to be implemented is a real skill. And sorely lacking in the industry.

CSB: I had to reengineer a tax compliance system for AT&T. So I interviewed the users. "How do you calculate this tax?" I asked.

"Well, we go into the legacy system, enter this number, and hit this button."

"No, I mean, what is the formula? What are the tax regs? If you had to calculate it with pencil and paper how would you do it?"

"Can you make the new screen light blue?"

[head banging on desk]


What a bunch of idiots, am I right? They should have totally asked for a mauve or chartreuse screen. Dumbasses.
 
2012-11-29 11:01:32 AM
"That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?
 
2012-11-29 11:02:51 AM

UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.


I agree, most are not this bad. I just happen to work with a few that are and it is frustrating to no end to troubleshoot something for a few hours that they won't admit to farking up. Thankfully I personally am not in desktop support anymore, but I still deal with those yahoos from time to time. Usually goes like this:

Programmers: OMG. Critical, urgent, right now, mail is not going out of Oracle. Your Exchange servers MUST BE DOWN!@!@

Me: Well, seeing as you just emailed me this, and I'm responding to email, and your service account is on the same server, no Exchange is likely fine. For fun, I just dropped whatever I was doing and looked at the queues, logs and services and everything looks fine.

Programmers: OMG, you need to fix Exchange now.

Me: I see nothing wrong, and the 8,000 other users on that server are not complaining. What *exact* error are you seeing. What do your logs say?

Programmers: OMG, we need a conference call to discuss what is wrong with Exchange.

Me: Gah, just send your flipping errors and let me know what servers you are trying to connect to.

..... 2 hours of silence go by....

Me: Guys, are you still having issues? I looked and see mail being processed for your Oracle accounts.

.... 4 hours later

Programmers; Oh yeah, we found it. We changed a module last night and fixed it.

Me: Fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


So right, not all are that stupid. Even not all the ones in my company are. But it only takes a small sample to ruin your day.
 
2012-11-29 11:03:08 AM

StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?


Or maybe subby is a guy who is a programmer who has a think for this chick in accounting...
 
2012-11-29 11:03:50 AM

yves0010: StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?

Or maybe subby is a guy who is a programmer who has a think thing for this chick in accounting...


damn it... typed to fast and was not thinking
 
2012-11-29 11:04:49 AM

UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.


That's better than what I get most of the time. Usually I have to troubleshoot "This no workey!" "Well, what's not working?" "it doesn't work!" "Ok, but what about it doesn't work?" "Everything. It's just all not working!"

So I go out to the floor and cannot identify any problems. I go back to my office and I never hear another peep.

FuryOfFirestorm: What a bunch of idiots, am I right? They should have totally asked for a mauve or chartreuse screen. Dumbasses.


I think mauve has the most RAM.
 
2012-11-29 11:07:49 AM

burndtdan: If no one reported it for years, then one morning the entire company reports it, it's the network (or a server).


Often, but now always. We've had cases of poorly written applications (both internal and OTS) that broke when a new desktop update was applied. Granted that is not usually the case and if you have decent software developers and vendors, it should not be. But sometimes you have deploy some shiatty software against your all your caution.
 
2012-11-29 11:08:30 AM

Celerian: UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.

That's better than what I get most of the time. Usually I have to troubleshoot "This no workey!" "Well, what's not working?" "it doesn't work!" "Ok, but what about it doesn't work?" "Everything. It's just all not working!"


I got that from my Girlfriend's mother when I was over visiting her. And it pissed me off cause I was fixing her computer, turns out if was just a driver issue, and the next day when I asked her about it. She told me she just reset her computer to factory settings and it solved the problem. I usually get very pissed off at that point.
 
2012-11-29 11:09:39 AM

Celerian: UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.

That's better than what I get most of the time. Usually I have to troubleshoot "This no workey!" "Well, what's not working?" "it doesn't work!" "Ok, but what about it doesn't work?" "Everything. It's just all not working!"


My favorite is, "I tried to do X and I got an error."

"What did the error say?"

"I don't know, I just closed it."

A significant percentage of the time, it's not actually an error (all dialog boxes = errors, apparently).
 
2012-11-29 11:09:51 AM

FuryOfFirestorm: What a bunch of idiots, am I right? They should have totally asked for a mauve or chartreuse screen. Dumbasses.


I was in a meeting once where we were proposing our own (internal) custom solution for travel vouchers against an outside competitor. One of the firm requirements was the ability to split line item expenses. Simple. Ours did it.

The competitor complained about our color scheme.

AT&T decided to still buy the vendor product.

I left shortly thereafter.

Considering the downward spiral that company took after I left 15 years ago I feel a bit vindicated. Most of the papers I wrote for my Masters in Management of Technology (which AT&T farking paid for) were on what the company was doing wrong.
 
2012-11-29 11:13:24 AM

China White Tea: My favorite is, "I tried to do X and I got an error."


I moved from doing development to being a support manager for my current companies custom development tools. Sometimes I feel lucky if we get that level of detail on incoming tickets. They actually say they got an error performing an activity? Lavish. Half our tickets are "product no work."

Of course there are others where you get the customer's life story and you have no farking clue what the problem is.

Sometimes I really wonder if they want help, or they want to biatch.
 
2012-11-29 11:16:44 AM

yves0010: Celerian: UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.

That's better than what I get most of the time. Usually I have to troubleshoot "This no workey!" "Well, what's not working?" "it doesn't work!" "Ok, but what about it doesn't work?" "Everything. It's just all not working!"

I got that from my Girlfriend's mother when I was over visiting her. And it pissed me off cause I was fixing her computer, turns out if was just a driver issue, and the next day when I asked her about it. She told me she just reset her computer to factory settings and it solved the problem. I usually get very pissed off at that point.


I also take into consideration that most people who work on the factory floor are not computer literate, so I stay patient. At least they're coming to get me for something they thought was a problem. Some are better than others. The ones I do get pissed off about are the ones who THINK they're super computer geniuses and end up ruining things. This exchange, for instance:

Sup3r Computer genius: "Hey we're having a problem with this thing, what should I do?"

Me: "Unfortunately, there's not a lot to be done until I can look at it and debug it. Its not critical, so please leave it alone."

SCG: "I'm gunna do this action."

Me: "Please DON'T do that action."

SCG: "So I should do this action?"

Me: "DO NOT do that action."

SCG: "Alright, I'll do that action and let you know what happens."

Me: "If you do that action, you might break other things. Please don't do that."

SCG: "Talk to you later."

*20 minutes later*

SCG: "Hey, I did that action and now other things aren't working. What now?"

Me: "Now I have to remote in and fix the bigger problem you caused by touching things I told you not to touch. I'm also going to send out an email, so our boss knows why I had to come in here to fix and issue you caused because you wouldn't listen to me when I told you to not touch something that wasn't important and could wait until morning. Chances are, you're going to get written up."

SCG: "Oh. Well, is there anything you need me to do?"

Me: "DON'T farkING TOUCH IT!"
 
2012-11-29 11:16:44 AM

Diogenes: China White Tea: My favorite is, "I tried to do X and I got an error."

I moved from doing development to being a support manager for my current companies custom development tools. Sometimes I feel lucky if we get that level of detail on incoming tickets. They actually say they got an error performing an activity? Lavish. Half our tickets are "product no work."

Of course there are others where you get the customer's life story and you have no farking clue what the problem is.

Sometimes I really wonder if they want help, or they want to biatch.


Rule of thumb for me is... Most people want to biatch about anything and everything
 
2012-11-29 11:19:25 AM

MooseUpNorth: Unfortunately, when the 'client/boss' decides he/she can forgo progs in the design phase, then overthinks the requirements and decides something is too complicated (to describe) and so goes with something simpler (on paper), or worse, holds back information (a required feature they think is best to tackle later), it can totally fark things up.


It's usually the first thing to hit the cutting room floor. It is a real shame too because as a Designer/HCI person myself I can save a project ridiculous amounts of money by foreseeing and solving problems long before they even reach a coder.

They make a good bit more than me, so if I spend 2 weeks doing something that saves them a week of time then it is a wash. Of course, I can actually save a project MONTHS of time if you give me a little up front space and freedom to figure out exactly how the project should be. Often though the client needs this product yesterday and in order to actually land a project the sales people have to lie their ass off because that is what all the competitors are doing.

/Race to the bottom
 
2012-11-29 11:19:26 AM
A few notes:

No matter how well you make the program, some farkwit will have issues using it. Even after you explain that computers aren't magic, and will go by what you tell it to do, not what you intend for it to do, they will continue to try to ham-fist their way through the program instead of reading the directions for the operation they're trying to use. If I haven't seen it from multiple people, I assume it's a user error. Even then, it's probably a user error.

Ex: Shifting all attendance submission to google drive for ease of collection (not the best system, but free and I don't have to code it). People delete spreadsheets, then add a new one by the same name and are mystified that we no longer have their reports. Yes, you know that spreadsheet is the supposed to go to us, like the last one with the same name, but the computer doesn't. It's a completely different thing, which means you'll have to sync it to us again. It takes about 30 seconds. Stop whining about a "broken system" - it's made by freaking google, for chrissakes.

Yes, doing something else helps with coding. It's not even that I'm thinking about code while I'm doing that other thing, it's that I'm not thinking about goddamn code.

Ex: Just about every problem I've ever solved, no matter how big or small. One 15 minute break to do something else lets me realize that, while the code can't do exactly what I want in one step, it can do two steps that accomplish the same thing.

/luckily I only write anything for the school's website, so it's all short scripts that do one or two things, nothing overly complicated
 
2012-11-29 11:22:15 AM

Diogenes: Sometimes I really wonder if they want help, or they want to biatch.


If they can say that something is broken while limiting the path to fix the issue, that means less time they have to do work combined with an easy excuse of "something is broken and the IT guy is fixing it".
 
2012-11-29 11:22:37 AM

Celerian: yves0010: Celerian: UberDave:

...



Wow, that is almost exactly what happens to me and my girlfriend's mother. She thinks shes an expert and that resetting it will fix all issues. But I told her over and over again that it actually makes things harder on me. Because she does the same damn thing over and over again and breaks the computer every single time. I usually am fixing the same error when I am over there. Rarely is it something I haven't seen.

I did get excited when the error was something along the lines of:
"Idiot, you got a virus and forgot to get an Antivirus like I said. Here, let me do this and you sit in the corner."

That made my day cause I was actually able to fix her computer without her getting involved. Something about viruses that scared her.
 
2012-11-29 11:23:26 AM

Coolfusis: Yes, doing something else helps with coding. It's not even that I'm thinking about code while I'm doing that other thing, it's that I'm not thinking about goddamn code.


I tried to find a scientific term for it, but gave up. Either way, when faced with difficult tasks, giving the brain an otherwise simple, muscle memory type task will allow the brain to think out the more difficult task in the background, so when you return to whatever it was you were having trouble with, you have a new idea to try. Its essentially shorting your brain into "sleeping on it" without needing to go to sleep.
 
2012-11-29 11:31:59 AM

yves0010: yves0010: StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?

Or maybe subby is a guy who is a programmer who has a think thing for this chick in accounting...

damn it... typed to fast and was not thinking thinging


/FTFY


StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?


Funnily enough, it's attitudes like subby's that tend to turn women off from programming (and the sciences in general).
 
2012-11-29 11:32:58 AM

Celerian: Coolfusis: Yes, doing something else helps with coding. It's not even that I'm thinking about code while I'm doing that other thing, it's that I'm not thinking about goddamn code.

I tried to find a scientific term for it, but gave up. Either way, when faced with difficult tasks, giving the brain an otherwise simple, muscle memory type task will allow the brain to think out the more difficult task in the background, so when you return to whatever it was you were having trouble with, you have a new idea to try. Its essentially shorting your brain into "sleeping on it" without needing to go to sleep.


Its simple as a break. I love doing that in projects. I have had team members look at me strangely while I am off reading a book or something like that while they are working on the project. They usually yell at me till they see I have the code written out and am just relaxing before I debug it. Refreshing my mind so I can focus and see things better and come up with better ideas.

Many a projects did I seem like the slacker but only cause I was the one coding the actual project.
 
2012-11-29 11:34:41 AM

bulldg4life: Diogenes: Sometimes I really wonder if they want help, or they want to biatch.

If they can say that something is broken while limiting the path to fix the issue, that means less time they have to do work combined with an easy excuse of "something is broken and the IT guy is fixing it".


Yeah, I'm sure we've all seen that before. And I can understand it if you are an internal IT resource. But my customers' companies pay obscene support fees. Seems stupid to stymie me and my team.
 
2012-11-29 11:35:09 AM

YodaBlues: yves0010: yves0010: StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.

"#1reasonWhy" was just yesterday, wasn't it?

Or maybe subby is a guy who is a programmer who has a think thing for this chick in accounting...

damn it... typed to fast and was not thinking thinging

/FTFY


Dude, out of my head! I was thinking about doing that as a joke too...
 
2012-11-29 11:43:24 AM

Diogenes: Yeah, I'm sure we've all seen that before. And I can understand it if you are an internal IT resource. But my customers' companies pay obscene support fees. Seems stupid to stymie me and my team.


My company isn't an internal IT resource. The company pays us obscene support fees. They still call for pointless reasons with limited information and seem to bask in the glory of having explanations for lowered productivity.
 
2012-11-29 11:48:38 AM

bulldg4life: Diogenes: Yeah, I'm sure we've all seen that before. And I can understand it if you are an internal IT resource. But my customers' companies pay obscene support fees. Seems stupid to stymie me and my team.

My company isn't an internal IT resource. The company pays us obscene support fees. They still call for pointless reasons with limited information and seem to bask in the glory of having explanations for lowered productivity.


I've encountered this kind of thing before, and I never fail to be baffled by it.

Ok, listen to me, you are PAYING me to give you expert advice. My expert advice it to do x instead of y. If we do y then you will have problems a, b, and c which you will then have to pay us to fix because they are outside the scope of the contract. Please listen to me, I am giving you advice that is in opposition to my very paycheck because I want you to be happy, and for us to do good work.

/We always do with y
 
2012-11-29 11:50:58 AM
13. This code doesn't need to be clean, it's more important that it runs correctly. I'll clean it up *after* we get it running properly.
 
2012-11-29 11:52:40 AM

ongbok: minoridiot: I have heard at least 7 of those in various meetings/converstations over the years.

This is a [hardware | database | network] issue, not a code issue

This is the one I always hear.


Yeah. As the technical architect I get the "short fuse" "high visibility" project to add or replace the hardware because a production system is bogging down or failing and "IT'S COSTING US MONEY!"

4 minutes in on consultation #1 on a project I've never seen before I ask what the problem is, and get "WHO ARE YOU? JUST ORDER THE HARDWARE!"

I advise the boss that this project is not going to fix the problem and pull off a miracle getting the $5M order placed in 4 days where we get 20. I'm out.

Months later we're back in "short fuse" "High visibility" "A TEAM" emergency calls because cutting the app over to the new hardware didnt' fix the problem and and "IT'S COSTING US MONEY!" (BTW, the JUST ORDER screamer no longer works for the company)

It is determined that I didn't get anything wrong.

"Ummmm...Boss, you do remember that I said it wouldn't fix the problem?"
-Yes. I do.
 
2012-11-29 11:59:11 AM
"This fix is so simple that we can put it straight into production - I may as well just push it live and go home for the weekend."

Except the guy made the change at 4 a.m. and went surfing. Took 40% of our customers down. 11 hours for the other programmers to figure out what he had done and remove it.
 
2012-11-29 12:05:37 PM

StopLurkListen: "That chick in accounting totally wants me"

Welcome to the modern world of 1950's. The assumption: the programmer is a male; there are no women programmers; and if there are women in the company, they're in some non-technical field like accounting.


I never assumed the programmer was male. Quite the opposite.

/giggity
 
2012-11-29 12:07:53 PM

wingnut396:
Programmers: OMG, you need to fix Exchange now.

Me: I see nothing wrong, and the 8,000 other users on that server are not complaining. What *exact* error are you seeing. What do your logs say?

Programmers: OMG, we need a conference call to discuss what is wrong with Exchange.

Me: Gah, just send your flipping errors and let me know what servers you are trying to connect to.

..... 2 hours of silence go by....

Me: Guys, are you still having issues? I looked and see mail being processed for your Oracle accounts.

.... 4 hours later

Programmers; Oh yeah, we found it. We changed a module last night and fixed it.

Me: Fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


So right, not all are that stupid. Even not all the ones in my company are. But it only takes a small sample to ruin your day.



Ah. Oracle (or more specific, the database). That's a different beast. Do this programmers play more of a DBA or database coder role? Yes. Those types are very often quick to blame *anything* external to what they are doing. I don't know if it is their work culture or what but my company, a software vendor, deals with many large company IT departments and I've had some really crappy dealings with DB programmers and the like.

One of the most recent was a client that was receiving constant database errors leading to a couple of thousand people being "locked in" by our transaction or portal control software. The error would happen randomly and for little chunks of time between 2 and 20 minutes. I knew instantly that someone had their fingers on the database running some report that locked a key table (SQL Server btw...). I told the database guys to simply watch for locks and record who hits the specific table. It took three conferences to convince them to do this because they were insistent that it was a problem with the software. A week passed and without a word, the problem miraculously disappeared and never resurfaced. I know some prick DB guy did what I said and found that they were running some report (or whatever) that locked the table. (sigh)
 
2012-11-29 12:10:01 PM
The biggest lie programmers tell themselves is: "A complete rewrite will make everything better"
 
2012-11-29 12:10:49 PM
Another one: "dual monitors make me much more efficient"
 
2012-11-29 12:11:46 PM

Marine1: The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.


C# always reads like the Gettysburg address:

namespace Monotalk.Indexer{using System;using System.IO;using
System.Collections;using Monotalk;using Monotalk.CSharp;public class Indexer{
public SourceDB db=new SourceDB();Hashtable fileIDs=new Hashtable();Hashtable
fileNames=new Hashtable();int files=0;public string this[int ID]{get{return(
string)fileNames[ID];}}public void Parse(string filename){CSharpParser parser;
ArrayList defines=new ArrayList();Stream input;int id;if(fileIDs[filename]==
null){fileIDs[filename]=(object)files; id=(int)fileIDs[filename];fileNa mes[id]=
filename;files++;}else id=(int)fileIDs[filename];try{input=Fi le.OpenRead(
filename);}catch{Console.WriteLine("So urce file '"+filename+
"' could not be opened");return;}StreamReader reader=new StreamReader(input);
parser=new CSharpParser(reader,filename,defines,d b,id);try{parser.parse();}
catch(Exception ex){Console.WriteLine("Compilation aborted: "+ex);}finally{
input.Close();}}}}
 
2012-11-29 12:12:27 PM

UberDave: He forgot, "The shiat I code is more cool/difficult/complex than 98% of everything out there!!".


This is related to "sure it doesn't handle all the cases but this code is so cool/elegant/efficient that it would be trivial to extend it".

6 months later there is a version that still doesn't handle all the cases, that nobody understands, and is a time hog for cases that are hard to pin down.
 
2012-11-29 12:17:38 PM
Unfortunately, as a team lead, but with no authority to fire anybody, the number one lie I keep telling myself is "If I give this to , he'll get it done on time and test it thoroughly and I won't have to go in and fix it for him in the end."

/What? Bitter? Me?
 
2012-11-29 12:19:09 PM

miscreant: Unfortunately, as a team lead, but with no authority to fire anybody, the number one lie I keep telling myself is "If I give this to <incompetent underling>, he'll get it done on time and test it thoroughly and I won't have to go in and fix it for him in the end."

/What? Bitter? Me?


FTFM
 
2012-11-29 12:20:52 PM

Celerian: I tried to find a scientific term for it, but gave up. Either way, when faced with difficult tasks, giving the brain an otherwise simple, muscle memory type task will allow the brain to think out the more difficult task in the background, so when you return to whatever it was you were having trouble with, you have a new idea to try.


It is usually called "unwinding" meaning that you are thinking too tightly about something and need to step back and loosen up your thinking. I don't know why you can't consciously unwind while still concentrating.
 
2012-11-29 12:23:29 PM

TheMaskedArmadillo: Marine1: The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.

One Word - "COBOL"

Also, "Give me another 20 minutes and I will have it fixed..."


I have seen COBOL that would make you cry. People can write unreadable crap in any language. I actually used to have to write crap. My job wasn't to fix things, but to produce data files. I was a contract programmer and if I wrote good clean code, the other guys wouldn't be used to it. o_O. When I was gone, the code had to be maintainable and understandable across a collection of people's code. I slipped in fixes where I could, but needed to retain the crappy structure from the guy before me.

That said "The guy before me did it all wrong."

/For the love of God, make meaningful variable names.
 
2012-11-29 12:27:57 PM

UberDave: wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...

So yeah, I don't give a fark that it works on yours, unless you are going to carry it and your ass up to accounting and do the receivables for the 10 people that now can't work.


The only time I ever say this to a client is when they do something like this:

Client: "I ran the program, and pulled up the personnel list. When I clicked on a person, I got errors. But the person seemed to load. I then tried to give the person a schedule record and got errors when I tried to save. Could you fix this?"

Me: "You need to send me a screen shot of your errors and/or the text of the errors. I cannot replicate this here at my office and my attempts to do what you are doing work perfectly. I will look at the code but it would be a huge help to have the actual errors descriptions."
--------------------

Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.


"That wasn't the first error you got. What was the first error?" "I don't know, I ignored through a bunch."
 
2012-11-29 12:30:23 PM

Felix_T_Cat: /For the love of God, make meaningful variable names.


What do you mean? f is a perfectly good variable name! It stands for "fark you future maintainer!"
 
2012-11-29 12:45:56 PM

Slaves2Darkness: Who writes SQL anymore?


Orgs with bad schema. You can spot it in the req for the job:

"Expert-level SQL performance tuning"

BZZZZRT! No thanks! Even if I were an expert, I'd rather solve problems that are on the forefront of software development, like mobile UX. Not unwind your exotic solutions to mundane problems because you either developed the system before Google was invented, or refused to use it in lieu of crafting some bizarre schema that pleased some nerd's sensibilities.

mcreadyblue: C# always reads like the Gettysburg address:


Hey, Mono! High-five!

Diogenes: "product no work."


Remember that users are put out that they even have to submit a bug report at all. They're punishing the product for inconveniencing them. Think of bug reports as honking the horn when someone cuts you off, because that's how they think of it.

Of course, we'd all love to get 0. Environment 1. Action Taken 2. Expected Results 3. Observed Results, but keep dreaming!

Felix_T_Cat: For the love of God, make meaningful variable names.


Hey tell that to the guy whose code I'm copy/pasting off of Stack Overflow!
 
2012-11-29 12:48:03 PM
This is a [hardware | database | network] issue, not a code issue

If the code hasn't changed, and the last 20 times an issue was raised it was the DB or network, then excuse me for assuming that someone screwed something up on the DB side again.

It's not a bug; the user is doing something wrong

Sometimes, the user is doing something wrong, it's not a bug. In my experience, there are some users that just don't get computing (my old boss said things had to be designed for the "barely competent"). We keep a list of those users and take everything they say/report with a huge grain of salt.

Other than those "barely competent" folks, if something isn't working the way a user expects, then generally, there's something wrong with the design itself, not just the code. I personally try to make my stuff as user friendly as possible and crappy errors/interfaces piss me off.

For example
lordargent.com

I know what the client wants

I don't know what the client wants, and I'm in good company because often the client doesn't know what they want either.
 
2012-11-29 12:54:18 PM
Slaves2Darkness: I guess you could use an SQL code generator, but really aren't most apps using a persistence framework like Hibernate? Who writes SQL anymore?

A generator writes the SQL, and then I modify it anyway to clean up the crap code that the generator generates.

// spaces instead of tabs, WTF is wrong with the people that wrote this SQL generator?
 
2012-11-29 12:56:30 PM

Felix_T_Cat: TheMaskedArmadillo: Marine1: The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.

One Word - "COBOL"

Also, "Give me another 20 minutes and I will have it fixed..."

I have seen COBOL that would make you cry. People can write unreadable crap in any language. I actually used to have to write crap. My job wasn't to fix things, but to produce data files. I was a contract programmer and if I wrote good clean code, the other guys wouldn't be used to it. o_O. When I was gone, the code had to be maintainable and understandable across a collection of people's code. I slipped in fixes where I could, but needed to retain the crappy structure from the guy before me.

That said "The guy before me did it all wrong."

/For the love of God, make meaningful variable names.


Been there. x:= x +1 is shiat in any language

PS - Actually had to debug COBOL written in German many years ago
 
2012-11-29 01:04:18 PM
I also just realized something.

lordargent.com

"even in different folders"

Um, how would you have two documents with the same name in the same folder?

// in the case of that error, I was opening up XLS files on my local machine and trying to compare to an XLS file from a UNC path, not only were these files in different directories, they were on different machines entirely.

// had to rename my local file temporarily in order to do the comparison, then rename it back when I was done.
 
2012-11-29 01:05:26 PM

lordargent: I modify it anyway to clean up the crap code that the generator generates.


No! Bad! Do not do this! Modify the generator source to make the code you want instead. What you're doing is "poisoning" the file so that it can never be regenerated without human intervention (in a continuous integration/automated build environment, for instance). What would be ideal is getting over your compulsion to reformat code so that tools can be used as they are intended, that way you don't waste time pleasing your sensibilities instead of fulfilling requirements.

lordargent: spaces instead of tabs, WTF is wrong with the people that wrote this SQL generator?


Here, read this. Nothing is wrong with them, there's something wrong with what the TAB character (and corresponding keyboard button) is supposed to mean, and it's represented differently by different systems and editors.
In short, disk files should never contain TAB characters, if there is any chance they will be either viewed on more than one OS, or edited with more than one editor, or an editor whose TAB behavior is not known at the time the file is made.
 
2012-11-29 01:05:57 PM

wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...

So yeah, I don't give a fark that it works on yours, unless you are going to carry it and your ass up to accounting and do the receivables for the 10 people that now can't work.


Well, to be fair, that's not a programmer issue, that's an environment management / change control / overall IT governance issue that demonstrates the need for some serious professional help.

Need a consultant? :)
 
2012-11-29 01:05:59 PM

mcreadyblue: Marine1: The self-documenting one... eh, it's sort of true. More and more languages are being developed as to make them read more like English, and this makes it easier to understand sans-comments. C# is an example.

C, on the other hand... if uncommented, is a nightmare.

C# always reads like the Gettysburg address:

namespace Monotalk.Indexer{using System;using System.IO;using
System.Collections;using Monotalk;using Monotalk.CSharp;public class Indexer{
public SourceDB db=new SourceDB();Hashtable fileIDs=new Hashtable();Hashtable
fileNames=new Hashtable();int files=0;public string this[int ID]{get{return(
string)fileNames[ID];}}public void Parse(string filename){CSharpParser parser;
ArrayList defines=new ArrayList();Stream input;int id;if(fileIDs[filename]==
null){fileIDs[filename]=(object)files; id=(int)fileIDs[filename];fileNa mes[id]=
filename;files++;}else id=(int)fileIDs[filename];try{input=Fi le.OpenRead(
filename);}catch{Console.WriteLine("So urce file '"+filename+
"' could not be opened");return;}StreamReader reader=new StreamReader(input);
parser=new CSharpParser(reader,filename,defines,d b,id);try{parser.parse();}
catch(Exception ex){Console.WriteLine("Compilation aborted: "+ex);}finally{
input.Close();}}}}


Four score and seven semicolons ago ...
 
2012-11-29 01:12:18 PM

nmemkha: Four score and seven semicolons ago ...


NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];

NSDate *fourScoreAgoComponents = [[NSDateComponents alloc] init];
[fourScoreAgoComponents setDay:-80];
NSDate *fourScoreAgo = [calendar dateByAddingComponents:fourScoreAgoComponents toDate:today options:0];
[fourScoreAgoComponents release];


/complaining about objective-c is my shiat
 
2012-11-29 01:16:53 PM
Vendor: "You have to call your IT, it's an issue with your system."
Client: "Ok, I'll call Felix."
Vendor: "What are you talking about? Felix works for us."
Client: "No Felix does upgrades on my system."
Me: "You're the payroll person... have you ever paid me?"

or

Client: "We've laid off half our IT staff. We need something, but don't know what it is."
Me: "Ok, lets set up one on one interviews with everybody involved."
After 5 interviews...
Me: "Ok, you have a test systems and a production system and you need version upgrades to both."
Client: "Yes, that's it!"
Client makes implantable medical devices.

or

Me: "I'm here to upgrade the software. Where's the machine?" (10 years ago)
Client: "I don't know, there's been 3 rounds of cuts in IT. I've only been here a few months."
Never did find it physically. Usually, you remote desktop and eject the CD, but the machine must have been at another location.
 
2012-11-29 01:18:29 PM
mccallcl: No! Bad! Do not do this! Modify the generator source to make the code you want instead.

The generator is closed source, and it's basically a one shot thing.

It's used to generate the initial queries (because typing all of that crap by hand at the outset is a PITA)

But after that, it's basically just the addition/subtraction of fields.

Here, read this. Nothing is wrong with them, there's something wrong with what the TAB characte

We standardized on tabs, the generator just doesn't have an option to use tabs, it's stupid. None of the arguments for using spaces in that link apply to our environments.

Some editors (like vi) treat TAB as being exactly like X, Y, and Z: when you type it, it gets inserted into the file, end of story.

So tabs piss off vi users, even more reason to use tabs :D
 
2012-11-29 01:31:02 PM
Felix_T_Cat:

Admin: Coolfusis, can you install all kinds of new servers and access points and such and so forth? BTW, your boss is gone. He refused to be a mystical, magical unicorn that fixed everything and made all this stuff free, so we forced him to resign.

Me: Uh, no? I know nothing about networks, I do some basic programming/web design. FFS, I'm still a student.

Admin: Oh. Well, we went ahead and bought everything he'd recommended, but now we don't have anyone who knows how to install it. Also, we don't want to pay 10k for someone else to come do it. Oh, hey, are you interested in being full-time "IT guy" from now on?

Me: LOLWAT NO. I'm nowhere near qualified, I'm like...adept level, at best.

Admin: Darn. Guess we'll go ahead and hire someone who isn't as good or as qualified as the one we had. Maybe he can do it better!

Me: dafuq
 
2012-11-29 01:35:01 PM

wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...



I don't think it's all that complicated. I'd guess that 9 times out of 10 they forgot to check in all of their files/changes.
 
2012-11-29 01:39:43 PM
 
2012-11-29 01:40:37 PM

jbtilley: wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...


I don't think it's all that complicated. I'd guess that 9 times out of 10 they forgot to check in all of their files/changes.



I take that back. The forgot to check something in is probably 1 or 2 out of 10. The rest is usually coding up an app that is very sensitive to bad data and the data on the QA/production machine is different from the data on the development machine.
 
2012-11-29 01:51:07 PM
This is a [hardware | database | network] issue, not a code issue
This can actually be the case. I've programmed machines before where the plant decided a few years later to build a second machine to copy the first. They'll copy the hardware and wiring, then save a copy of my program from the first and load it into the second. Then call me to biatch that my code doesn't work the same on the second machine.

It's not a bug; the user is doing something wrong
I've used this excuse several times. Usually after the user runs into something with a forklift.
Or tapes a penny on top of a sensor that supposed to detect that a safety latch is closed. See that way, he doesn't have to take the 5 seconds every hour to ensure the machine can't rip his arm off at the nipple.
 
2012-11-29 01:54:52 PM

natazha: Except the guy made the change at 4 a.m. and went surfing. Took 40% of our customers down. 11 hours for the other programmers to figure out what he had done and remove it.


Which brings us to another one: "It's just a tiny utility, it doesn't need to be in source control."
 
2012-11-29 02:30:39 PM

lordargent: The generator is closed source, and it's basically a one shot thing.


That program is not doing its job, get a new program. The state of the art has changed significantly since you got that generator. Depending on your platform, there are a multitude of ORMs that will generate and log SQL for you. With the right tool, you can use continuous integration to rebuild all your stored procs (or inline SQL, whatever you're using) from your model, or generate your model classes from your schema. Most, if not all of these tools are FOSS.

Or write your own!

lordargent: None of the arguments for using spaces in that link apply to our environments.


Sure they do. You're putting meaningless characters in your files that behave differently depending on where and when they are edited or consumed. Use spaces, which are standardized across systems and editors. Or, just leave well enough alone, because the designers of your tool made an intentional decision not to include the option to insert tabs for a reason. If you're confused as to why, email them and ask.

You standardized on tabs? Wow, way to use time making a "standard" that is not only wrong (and useless, compared to standardizing on something important), it's costing you extra work. Let me guess: Windows shop?
 
2012-11-29 02:38:19 PM
My Favorite programmer story from the 90s:

phone rings, me: "Hello"
VFP Programmer: "Hi. I need more memory"
me: "Why?"
VFPP: "Because my computer says so"
me: "and exactly what does it say?"
VFPP: "out of memory"
me: "Wha? What are you doing?"
VFPP: "Just writing my code and all of a sudden I got that error. I need more memory"
me: "I'll be right there"

So I walk over to his desk, ask him to show me what he's doing. He clicks the 'compile and run' button, which immediately comes up with 'Out of memory'.

Me: "So, has this code ever worked?"
VFPP: "Yeah, it's the main system. I was just making some changes"
Me (not a programmer, not even a college grad): "What, did you put yourself in an infinite loop?"
VFPP: "No. What? Ummm... huh. Ohhhhh! heh... Yep"

grrr
 
2012-11-29 02:40:33 PM
mccallcl: That program is not doing its job, get a new program. The state of the art has changed significantly since you got that generator.

Preaching to the choir, but I'm the programmer, I don't buy these tools.

And well, I can use my own tools for code generation, and I have some control over my developers on shore, but I don't directly control the offshore guys.

mccallcl: Sure they do. You're putting meaningless characters in your files that behave differently depending on where and when they are edited or consumed.

Which is exactly what's needed.

Put a tab in the code, and one guy will configure his editor to show it at 5 stops, another will show it at 10 stops, etc.

Put spaces in the code, and you will never get an agreement as to how many spaces there should be.

Fact is, there's an expected way that tabs should work today.

// spaces instead of tabs == failed code review.

// also, commas in the front on SQL statements :P
 
2012-11-29 02:42:04 PM
mccallcl: You standardized on tabs? Wow, way to use time making a "standard" that is not only wrong (and useless, compared to standardizing on something important), it's costing you extra work. Let me guess: Windows shop?

Windows, solaris, ubuntu, OSX, and I think there's a handful of OS10 boxes around here somewhere.
 
2012-11-29 02:55:17 PM
This fix is so simple that we can put it straight into production

Sometimes this is the case. I recently fixed a stored proc by changing "and" to "or" in a where clause. It could have been released immediately.
 
ZAZ [TotalFark]
2012-11-29 03:02:54 PM
In short, disk files should never contain TAB characters, if there is any chance they will be either viewed on more than one OS, or edited with more than one editor, or an editor whose TAB behavior is not known at the time the file is made.

I'm the guy who runs

svn propset svn:eol-style native

on other people's files. Some of them use Windows. Some of us use Unix. If you let CRLF and LF mingle sooner or later it ends in tears. 

Thank Jobs Apple finally got over its bare CR phase.
 
2012-11-29 03:05:04 PM

lordargent: Which is exactly what's needed.


I call this the "Green Acres Effect"

EDDIE: Why is that pig wearing a hat?
EVA: What else is it supposed to wear on its head?
 
2012-11-29 03:07:33 PM

verbaltoxin: /Office Space had it right. Engineers are terrible at dealing with people.


Actually, it's people who are terrible at dealing with engineers.
 
2012-11-29 03:33:45 PM

Jclark666: wingnut396: My favorite is

"Well it works on my machine"

Sure, the machine where you have all the SKDs installed, full local admin access and not controlled by any policies? You likely stopped the AV, firewall and all centralized management packages from running too. I bet your machine is not even on the domain...

So yeah, I don't give a fark that it works on yours, unless you are going to carry it and your ass up to accounting and do the receivables for the 10 people that now can't work.

Well, to be fair, that's not a programmer issue, that's an environment management / change control / overall IT governance issue that demonstrates the need for some serious professional help.

Need a consultant? :)


That example , yes I agree, it is not solely a programmer issue. They call their team a 'dev' team, but they are really Oracle DBAs that do some customization of COTS Oracle applications that we purchased decades ago that are no longer supported by the crappy company we bought them from.

The others I have had in the past were actual developers that built and maintained our applications from scratch. One these guys was sloppy and lazy and never wanted to test his application or updates on a standard image. He insisted that if it worked on his machine, it would work everywhere. Regardless if was still running NT4 and we were moving to XP he would never test anything. Have a met a few others like this. Thankfully most have fallen off the map through the years.

As for a consultant, can't help you there. I'm a small fish in a big, big company. I'd just rather get sane Oracle drones at the moment. And we have newer management, it is getting better. Just wonder how long before the outsourcing hammer hits.
 
2012-11-29 03:34:55 PM

abhorrent1: It's not a bug; the user is doing something wrong - The code is doing what it's supposed to be doing; users are idiots.

This is probably true more often than not.


Years ago when I did software QA, one of my standard tests was to slam down on the keyboard. The primary application had a nasty habit of completely locking up the computer when you did that (requiring a hard reboot). The lead programmer insisted there was nothing to fix, "don't do that!" I insisted it was a valid bug in his custom keyboard handling code (this was pre-windows days) and accidently leaning on the keyboard (or a cat jumping on it) was a reasonable thing to for.

Just because a user should not do something, doesn't mean that won't do it.
 
2012-11-29 03:42:25 PM

lordargent: mccallcl: You standardized on tabs? Wow, way to use time making a "standard" that is not only wrong (and useless, compared to standardizing on something important), it's costing you extra work. Let me guess: Windows shop?

Windows, solaris, ubuntu, OSX, and I think there's a handful of OS10 boxes around here somewhere.


...
 
2012-11-29 03:57:28 PM
A note to developers. Stop using a superuser db account to test in your sandbox since you already know the code won't be run with superuser priviliges, damn it!
 
2012-11-29 03:58:35 PM

wingnut396: UberDave: Most programmers aren't that stupid. We know you are running in a different environment (sometimes radically). If you can't do something, you need to either provide the error you are getting or give the sequence that led to the error or both.

I agree, most are not this bad. I just happen to work with a few that are and it is frustrating to no end to troubleshoot something for a few hours that they won't admit to farking up. Thankfully I personally am not in desktop support anymore, but I still deal with those yahoos from time to time. Usually goes like this:

Programmers: OMG. Critical, urgent, right now, mail is not going out of Oracle. Your Exchange servers MUST BE DOWN!@!@

Me: Well, seeing as you just emailed me this, and I'm responding to email, and your service account is on the same server, no Exchange is likely fine. For fun, I just dropped whatever I was doing and looked at the queues, logs and services and everything looks fine.

Programmers: OMG, you need to fix Exchange now.

Me: I see nothing wrong, and the 8,000 other users on that server are not complaining. What *exact* error are you seeing. What do your logs say?

Programmers: OMG, we need a conference call to discuss what is wrong with Exchange.

Me: Gah, just send your flipping errors and let me know what servers you are trying to connect to.

..... 2 hours of silence go by....

Me: Guys, are you still having issues? I looked and see mail being processed for your Oracle accounts.

.... 4 hours later

Programmers; Oh yeah, we found it. We changed a module last night and fixed it.

Me: Fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


So right, not all are that stupid. Even not all the ones in my company are. But it only takes a small sample to ruin your day.


Not saying that I do exactly this, but I find that when there's a critical bug in something I wrote, the only way I have a few consecutive minutes to fix the problem, is to distract the managers. Otherwise, you're too busy answering demands for a status update and meeting requests to discuss the problem to actually fix it. Pointing the finger at a server, when you know the person responsible for it is out of the office, is a great way to buy time.
 
2012-11-29 04:02:10 PM

yves0010:
This fix is so simple that we can put it straight into production - Never encountered this because I only wrote programs for classes right now.


The school equivalent is that you write a program for homework or whatever and test it extensively and it works great. Then you realize (or someone tells you) you forgot to handle special case X. You put in a quick fix, test it 1 time, and then hand in your assignment.
 
2012-11-29 04:07:50 PM

someguy945: yves0010:
This fix is so simple that we can put it straight into production - Never encountered this because I only wrote programs for classes right now.

The school equivalent is that you write a program for homework or whatever and test it extensively and it works great. Then you realize (or someone tells you) you forgot to handle special case X. You put in a quick fix, test it 1 time, and then hand in your assignment.


And you only tested the special case, because "hey, it shouldn't even get called in the other cases, right..."
 
2012-11-29 04:16:45 PM

mccallcl: lordargent: The generator is closed source, and it's basically a one shot thing.

That program is not doing its job, get a new program. The state of the art has changed significantly since you got that generator. Depending on your platform, there are a multitude of ORMs that will generate and log SQL for you. With the right tool, you can use continuous integration to rebuild all your stored procs (or inline SQL, whatever you're using) from your model, or generate your model classes from your schema. Most, if not all of these tools are FOSS.

Or write your own!


Reading this gave me flashbacks to developing a Net-SNMP subagent for one of my company's products. The "official" way to do it is to write a MIB, then use a perl script called "mib2c" to generate a long and complicated C implementation of the MIB where you fill in the blanks with the necessary code to retrieve the desired values.

If you have to change your MIB for any reason...well, I hope you have access to good diff/merge tools.
 
2012-11-29 04:32:40 PM

jimpoz: bulldg4life: I think the points that he comes up with are silly and there was no effort to put in to it. However, his initial premise is spot on...programmers spend lots of time staring at code and they construct weird realities that make everyone look at them sideways. 

[www.jimpoz.com image 580x502]


how true.
 
2012-11-29 04:54:16 PM
ProfessorOhki: Windows, solaris, ubuntu, OSX, and I think there's a handful of OS10 boxes around here somewhere.

Ahh shiat, I meant OS/2

sphotos-b.xx.fbcdn.net

// it's totally cool
 
2012-11-29 05:11:44 PM

Havokmon: Me (not a programmer, not even a college grad): "What, did you put yourself in an infinite loop?"


Infinite recursion will do that. Not infinite loops. Loops will just appear to hang while pegging the processor.
 
2012-11-29 05:21:05 PM
Me: "Hey operator! You know how the mainframe has that infinite loop watchdog?"
Operator: "Yeah, I think so,"
Me: "Turns out it must be looking for disk read/writes and trap based on that."
Operator: "What of it?"
Me: "Well minutes after I convinced you to elevate my process priority and you told me to be careful I had a runaway loop in an array. I sent a quarter million pages to the print spool. Did you notice that?"
Operator: "...."

Not really my fault...

Head Operator: "Hey Felix, our programmer retired without notice. What do you know about COBOL?"
Me: "Umm, in 1979 I spent 17 hours looking for 3 misplaced periods."
Head Operator: "Ok, we'll set you up with access."
Me: o_O "Umm, I'm a PC tech, do I get any manuals or training?"
Head Operator: "No."
Me ordering off eBay: "I wonder if these are the right books..."
 
2012-11-29 05:29:04 PM

Coolfusis: Felix_T_Cat:

Admin: Coolfusis, can you install all kinds of new servers and access points and such and so forth? BTW, your boss is gone. He refused to be a mystical, magical unicorn that fixed everything and made all this stuff free, so we forced him to resign.

Me: Uh, no? I know nothing about networks, I do some basic programming/web design. FFS, I'm still a student.

Admin: Oh. Well, we went ahead and bought everything he'd recommended, but now we don't have anyone who knows how to install it. Also, we don't want to pay 10k for someone else to come do it. Oh, hey, are you interested in being full-time "IT guy" from now on?

Me: LOLWAT NO. I'm nowhere near qualified, I'm like...adept level, at best.

Admin: Darn. Guess we'll go ahead and hire someone who isn't as good or as qualified as the one we had. Maybe he can do it better!

Me: dafuq


Bosses: "Hey tech guys, what 100 tape backup robot do you want us to buy?"
Techs: "Brand X model B."
Bosses: "Ok, we bought brand Y model C instead."
 
2012-11-29 05:36:58 PM

anfrind: If you have to change your MIB for any reason...well, I hope you have access to good diff/merge tools.


Or just change the script to take input parameters and re-run it with new parameters (at every check in).

This whole thread is basically an advertisement for continuous integration.
 
2012-11-29 06:10:13 PM

MooseUpNorth: Havokmon: Me (not a programmer, not even a college grad): "What, did you put yourself in an infinite loop?"

Infinite recursion will do that. Not infinite loops. Loops will just appear to hang while pegging the processor.


Pretty sure you can do that to yourself with loops too. Though, admittedly, "while(1) malloc(10);" usually has a more interesting result than an "out of memory" dialog.

/INVOKE THE OOM KILLER
 
2012-11-29 06:46:51 PM
Some experiences of mine:

In a meeting where production changes are reviewed and approved/denied

Me: OK, so does anyone have any other changes for review before we end the meeting?
No one answers
Me: OK, thank you all, I'll publish the changes that have been approved.
Everyone leaves except one person
That person walks over to me: I have a change for review...

Yesterday:
Programmer: My code won't compile
Me: Did you review the compile log?
Programmer: Yes, it says there was a file missing. I need to build the file
Me: So did you do it?
Programmer: No
Me: Well there's your problem
Programmer: Oh..right

A few days ago
Programmer to executives: This high-priority incident is due to a coding change implemented 11/19 to Production without being fully tested
Manager to me: Why did you implement this change 11/19?
Me: We didn't implement anything 11/19. We haven't changed this system since September.
Manager: Ok but why didn't you fully test that September change?
Me: Because we're not the testing department - they signed off on it saying it was fully tested
Manager scratches his head

About a month ago:
Programmer: My error checking of my production build says that it can't find this object it needs to compile my program. You need to rebuild the production environment so that it has the object
Me: But you are creating that object new...rebuilding the environment won't help you. You need to include it in your build
Programmer: I thought we copied our entire development environment to production every day
Me: Why would we copy everyone's non-tested/half finished code to production automatically?
Programmer: But it makes sense....
Me: No it doesn't. That's why you do builds of tested software
Programmer: I thought we did just to complete documentation
Me: *facepalm*
 
2012-11-29 07:11:21 PM
It's not a bug; the user is doing something wrong - The code is doing what it's supposed to be doing; users are idiots.

This is true a lot of the time. Users don't like garbage in/garbage out. "See, I put in a name, and I get back the wrong address."

"You put in John Smith's name, and you got John Smith's address back."

"But I don't want John Smith's address. It should have returned an error, because I was supposed to enter Richard Rogers."
 
2012-11-29 07:43:48 PM
As the former IT girl in Accounting, I did, I totally wanted you. Yes, you, balding, pudgy average-looking network guy. Didn't you notice our instant rapport? I even called you from my cell phone when we needed you... but did you ever call me back? No. I had to go find a different geek to hook up with and eventually become deliriously happy with.
 
2012-11-29 08:18:27 PM

mccallcl: anfrind: If you have to change your MIB for any reason...well, I hope you have access to good diff/merge tools.

Or just change the script to take input parameters and re-run it with new parameters (at every check in).

This whole thread is basically an advertisement for continuous integration.


Three problems with that. One, it's a third-party script, so any changes we make would most likely have to be completely re-done if we ever upgraded to a new version of the package (in this case, Net-SNMP). Two, the additional arguments would be non-trivial, as they would have to tell it which function calls return the values that should be reported for which OIDs (basically a map structure). Third, the script is written in that write-only language known as Perl.

To be honest, your solution would be a lot easier if the script (or a script like it) generated C++ code instead of C code (my application was written in C++), because then it could use an inheritance model similar to the one typically used by CORBA IDL compilers (i.e. it would generate a base class with pure-virtual methods representing each OID, and then I'd write a derived class that implements the virtual methods). However, while such a code generator would be an interesting programming challenge, I simply didn't have the time to do that.
 
2012-11-29 08:33:23 PM

QT_3.14159: As the former IT girl in Accounting, I did, I totally wanted you. Yes, you, balding, pudgy average-looking network guy. Didn't you notice our instant rapport? I even called you from my cell phone when we needed you... but did you ever call me back? No. I had to go find a different geek to hook up with and eventually become deliriously happy with.


I'll tell Mom. Then we can set the wedding date.
 
2012-11-29 09:06:47 PM

QT_3.14159: As the former IT girl in Accounting, I did, I totally wanted you. Yes, you, balding, pudgy average-looking network guy. Didn't you notice our instant rapport? I even called you from my cell phone when we needed you... but did you ever call me back sent you an email? No. I had to go find a different geek to hook up with and eventually become deliriously happy with.

 

/Maybe Exchange was down
 
2012-11-29 09:08:55 PM

ProfessorOhki: someguy945: yves0010:
This fix is so simple that we can put it straight into production - Never encountered this because I only wrote programs for classes right now.

The school equivalent is that you write a program for homework or whatever and test it extensively and it works great. Then you realize (or someone tells you) you forgot to handle special case X. You put in a quick fix, test it 1 time, and then hand in your assignment.

And you only tested the special case, because "hey, it shouldn't even get called in the other cases, right..."


Actually, I usually make others fill in the blank and make them fix it.
 
2012-11-29 09:56:29 PM
This code is self-documenting - Biggest lie in programming. If you can't comment your code, don't write code in the first place.

This is a [hardware | database | network] issue, not a code issue - I've been in sooooooo many cases where the code was the first thing blamed. I've watched VPs blame code for slowdowns network-wide...when the server hosting the code was unplugged for a move. After 15 years of writing code professionally, I'd say it roughs out to half and half. Half the time the code is at fault, the other half it's another portion causing the problem.

It's not a bug; the user is doing something wrong - It's a bug. Doesn't matter the user is an idiot, your job is to make the code as idiot-proof as possible. Find the biggest idiot to test your code, launch it when they can't break it, and expect to revisit it to fix 2-3 months down the road, if you're lucky.

When I'm playing Halo 4 I'm thinking about coding, so it's like I'm coding - Some of my best coding is done in my head while driving, eating, even in the shower. Staring at the same if/else block probably won't give you an epiphany. But moving onto something else and letting you brain work in the background is incredibly helpful. Just don't bother with Halo 4, stick with something productive and actually good.

I'm the only one who knows this code, so they can't lay me off - Everyone is expendable. Work some time in education, and you'll find out how true that is.

I know what the client wants - I frequently know what they need, and let them tell me what they want. Spend any time in education, and you will see tons of requests that look nothing like the eventual product. Give the client what they need, not what they want. Otherwise, watch yourself get burned.

QA will find any bugs - Never rely on QA. In fact, consider yourself lucky if you even have a QA group/department. See previous suggestion about getting idiot users to test. Frequently, this will be anyone in a supervisory role or the Help Desk (since I've yet to encounter a Help Desk capable of helping anyone themselves, friggin' glorified telephone operators).

This fix is so simple that we can put it straight into production - Situational. I've put right into Production without testing on Dev when I knew for a fact that the solution was solid. That being said, it's not the normal practice I follow, and will only do it in extreme circumstances.

Of course this will scale - Code should work the same whether it's 1 user or 1 million. If you didn't spend the time up-front to reduce all operations to the lowest levels possible, then you need to seek out a different position.

I could rewrite this pile of spaghetti legacy code and save time in the long run - I've actually spent the time re-writing legacy code, and saved oodles of time in the long run. The hard part is deciding whether to rewrite the code or rewrite the whole app.
 
2012-11-29 10:04:04 PM

ongbok: minoridiot: I have heard at least 7 of those in various meetings/converstations over the years.

This is a [hardware | database | network] issue, not a code issue

This is the one I always hear.

ManateeGag: I don't know. I've mentally solved some crazy issues with an AI program I wrote in college while playing Tetris. Sometimes letting eyes focus one something other than a block of code helps your brain figure out problems.

Yes. This is often very true with any problem you are having trouble with solving.


I've heard it referred to as the" Eureka phenomenon", based off of when Archimedes solved his problem only after he quit thinking about it and took a bath, instead. Basically, the creative part of the brain works better when the brain is unfocused.
 
2012-11-29 10:29:47 PM

ManateeGag: I don't know. I've mentally solved some crazy issues with an AI program I wrote in college while playing Tetris. Sometimes letting eyes focus one something other than a block of code helps your brain figure out problems.


The subconscious is usually a better programmer than your conscious mind. I can't tell you how many times I've woken up with the solution to last night's problems in my head.
 
2012-11-29 10:39:15 PM
djones101: It's not a bug; the user is doing something wrong - It's a bug. Doesn't matter the user is an idiot, your job is to make the code as idiot-proof as possible. Find the biggest idiot to test your code, launch it when they can't break it, and expect to revisit it to fix 2-3 months down the road, if you're lucky.

Unfortunately, there's a budget, and I can't keep assigning tasks to my developers to appease the 2 'barely competent' users in a group of hundreds.

// If it's a small task, I can't really argue against it, so I pick my battles and go after the large tasks. I try to give alternate methods of doing something that won't result in a ton of development time and maintenance. I'm all about finding "elegant solutions".

For example, in an app we recently had to throw in a text widget telling users how to select multiple items from a selection box. The thing is, previously they had asked for other widgets to be placed in very specific places, so a developer spent a non trivial amount of time moving widgets around to make space for this text box. (I had offered other solutions that would have taken a fraction of the time to implement, but no dice).

// PS. you select multiple items by holding down the CTRL or SHIFT keys ... just like windows ... the operating system that this app runs in.

// At the end of the day, if they're willing to fund the development cost, then I have to assign it. But I make sure to note the time it took to do it so that later down the road, when I defer something for budget reasons, I can point to foo, bar and baz and say we spent X hours of development time.

// I add "SP" as a tag so that I easily keep track of them. I tell folks that the tag means "SPecial case", but in reality, SP stands for "shiat Pile"
 
2012-11-30 12:40:39 AM

djones101: This code is self-documenting - Biggest lie in programming. If you can't comment your code, don't write code in the first place.


Try being the only white-boy in an office full of Asian programmers who don't speak good English. When I have to pick up their code, I spend half the time commenting it.



This is a [hardware | database | network] issue, not a code issue - I've been in sooooooo many cases where the code was the first thing blamed. I've watched VPs blame code for slowdowns network-wide...when the server hosting the code was unplugged for a move. After 15 years of writing code professionally, I'd say it roughs out to half and half. Half the time the code is at fault, the other half it's another portion causing the problem.

That's a good ratio. My company (vendor) produces a largish enterprise suite. I think the ration I've seen is more like 75/25 blame/actual code problem. Hell, I literally had two today. One was a large client who had an individual receive a legitimate error egressing with our portal control because his monitoring device (hardware) threw an alarm. The user insisted the hardware device, not made or sold by our company (but our software configures it), did not indicate any kind of alarm. Luckily the portal control or transaction program captures *everything* about the device on ingress or egress so I can pretty much prove the hardware malfunctioned or the user was lying through their ass (second one - 98%).

The other was the same transaction program catching a flag in a personal monitoring device and refusing ingress. Turns out the hardware manufacturer (our partners) never sent us the white paper which contained the status word descriptions which were slightly changed from the previous hardware version...fun times.

It's not a bug; the user is doing something wrong - It's a bug. Doesn't matter the user is an idiot, your job is to make the code as idiot-proof as possible. Find the biggest idiot to test your code, launch it when they can't break it, and expect to revisit it to fix 2-3 months down the road, if you're lucky.


I can agree with this. I mentioned the foreign born programmers - they totally lack the ability (most of the time) to understand how users interact with software. Some of them (users) are dumb, some have a phobia with computers, some don't want to commit brain power to mundane data entry/maintenance, etc. I deal with a shiat-load of Winforms and WPF GUI data manipulation software. I try to reduce the amount of clicks for a process but make every click do something meaningful, useful, or at least informative. And *always* provide as much information as possible but not in the form of freaking unnecessary pop-ups. Things like that...pretty much.


When I'm playing Halo 4 I'm thinking about coding, so it's like I'm coding - Some of my best coding is done in my head while driving, eating, even in the shower. Staring at the same if/else block probably won't give you an epiphany. But moving onto something else and letting you brain work in the background is incredibly helpful. Just don't bother with Halo 4, stick with something productive and actually good.

Yep. The shower is my spot. But sometimes I just roam the halls and/or stairs thinking about it (plus, I need to get out from behind my workstation every now and then and stretch the legs).


I'm the only one who knows this code, so they can't lay me off - Everyone is expendable. Work some time in education, and you'll find out how true that is.


There not all expendable but usually management/ownership thinks they are. Everyone *can* be laid off.


I know what the client wants - I frequently know what they need, and let them tell me what they want. Spend any time in education, and you will see tons of requests that look nothing like the eventual product. Give the client what they need, not what they want. Otherwise, watch yourself get burned.

Yep. You have to throw yourself into understanding the industry to deliver this (or have someone who does and can translate into good spec). It's surprising how many people don't give a shiat about the industry they write code to...


QA will find any bugs - Never rely on QA. In fact, consider yourself lucky if you even have a QA group/department. See previous suggestion about getting idiot users to test. Frequently, this will be anyone in a supervisory role ...


Worse, try having someone who doesn't know (or care to know) the software or the business very well write the entire test document that is the *sole* procedural step to production (well...QA dry run against the document, fix document, FAT test then delivery). If you think that is stupid, lame, irresponsible, dumb...yes. I totally agree. If I get started on this, I will go forever...(my world sucks...at least I have a bonus coming).


/good post
 
2012-11-30 01:17:52 AM
This is a [hardware | database | network]

// config

Luser: The [name of application framework] isn't working correctly, it keeps giving me an error.

Me: What specific application are you trying to use, can you send me a screenshot of the error message.

Luser: Nothing is working, here's a screenshot.

Me: (Looks at screenshot) ... Did anything on your machine change recently?

Luser: Yeah, I got a new laptop.

Me: You need to install the plugin for [name of application framework].

Luser: but I never had to do that before

Me: (Re-sends the most recent e-mail that contains instructions on how to install the plugin)

// The error message in question ... "You don't have the plugin for [name of application framework] here, click here to install the plugin for your browser."
 
2012-11-30 03:12:10 AM
blogger sounds like an idiot IT guy I have the displeasure of occasionally having to deal with because he treats productions environments like his own personal fun sandbox.

COBOL should be classified as some sort of disease. It should be eradicated like polio.
 
2012-11-30 09:20:30 AM

MooseUpNorth: Havokmon: Me (not a programmer, not even a college grad): "What, did you put yourself in an infinite loop?"

Infinite recursion will do that. Not infinite loops. Loops will just appear to hang while pegging the processor.


That's true, assuming no new data is being created with each loop iteration. They routinely created uniquely named cursors (temp tables in memory), and just let the application clean up upon exit. I won't even go into the corporate Windows 3.1-> Win98 upgrade because Win98 'fixed' their code that contained " c: ; cd\database ; open table " shiat that broke when another program would change the startup directory. Yeah. It didn't. Duh.

Which now you understand the way I really started into programming - I was getting sick of after hours calls when their shiat crashed, and just started fixing the code myself.
 
2012-11-30 10:49:45 AM

djones101: If you didn't spend the time up-front to reduce all operations to the lowest levels possible, then you need to seek out a different position.


WRONG. Premature optimization is the root of all evil. Optimization usually makes code harder to understand and introduces bizarre feats of engineering that as it turns out are not necessary and make the code more expensive to maintain. You should only optimize if there is a problem. How do you know there's a problem? Unit tests that fail on a performance metric.

djones101: This code is self-documenting - Biggest lie in programming. If you can't comment your code, don't write code in the first place.


Code comments are at best confusing, at worst completely misleading. There is nothing that guarantees the comments will be accurate. Just like everything else, if it's not trustworthy, you don't trust it.

Unit tests, people. Unit tests. Unit tests are documents written in code that themselves exercise the code they document and present its quantitative truth value as either PASS or FAIL. I remove most code comments I find. If there aren't any comments, you have to take the time to understand what you're doing, which you should be doing anyway. I check all comments for accuracy and remove the ones that are either out of date, misleading or useless (most of them). Non-native-English speakers especially should not be allowed to write comments!

They should make programmers take philosophy coursework. Philosophy has helped me understand software and process better than all the comp sci I could stand.

As for "idiot proofing", programmers testing thoroughly, etc, I have this to say:

Doors are something that every building has at least two of. Billions of them in the world. Yet, they still are installed wrong, pull handles when they are pull doors, too heavy to open, SLAM closed on people. We've all used doors that if they were software we'd scream they "don't work". If the people who design, build and install freaking doors can't be expected to get it right, then how can something with orders of magnitude more complexity be expected to work perfectly every time, even if the user doesn't use it right? Haven't you ever pulled on a door that was supposed to be pushed open? Did you run to the nearest employee you could find and demand the store be closed and a construction crew rushed to the scene to fix it?

Users, your time is just not that valuable and your convenience is just not that important. You are not worth $15000 to keep you from pushing on a door marked "pull". Apple et al has blown too much smoke up people's asses about their "user experience". Everyone thinks software, the most complex of human endeavors should be "intuitive" to even the dumbest of idiots. You are asking someone who makes $110K/yr to make your $65K/yr job easier and more fun. Think about it, it's not going to happen and it shouldn't happen if it does.

The cognitive load you take on when programming computers is immense. Over decades, it makes us go insane. Give programmers a break. While you're at home getting wasted, they are learning how to make your lives better.
 
2012-11-30 11:10:00 AM

Havokmon: MooseUpNorth: Havokmon: Me (not a programmer, not even a college grad): "What, did you put yourself in an infinite loop?"

Infinite recursion will do that. Not infinite loops. Loops will just appear to hang while pegging the processor.

That's true, assuming no new data is being created with each loop iteration.


Yeah, point. Had that happen in an obscure database front end builder where its interface to shared libraries (or dlls) would allocate space for parameters, but didn't free that space upon return. Didn't re-use the memory on subsequent calls, either. Put one of those in a tight loop and...
 
2012-11-30 05:00:28 PM
mccallcl: Users, your time is just not that valuable and your convenience is just not that important. You are not worth $15000 to keep you from pushing on a door marked "pull".

One of our buildings has completely transparent automatic sliding glass doors, except for the stickers/paint in the center of the doors that say "warning, automatic sliding door".

//why didn't you just use frosted glass, then you get the diffuse lighting and you don't have a warning label breaking the asthetics.
 
2012-11-30 06:23:12 PM

lordargent: mccallcl: Users, your time is just not that valuable and your convenience is just not that important. You are not worth $15000 to keep you from pushing on a door marked "pull".

One of our buildings has completely transparent automatic sliding glass doors, except for the stickers/paint in the center of the doors that say "warning, automatic sliding door".

//why didn't you just use frosted glass, then you get the diffuse lighting and you don't have a warning label breaking the asthetics.


The warning isn't there so people notice the door; it's so they don't try to open them manually and get their hands caught in some mechanism in some unexplainable freak accident that leaves you liable. "Get your hands off the door, moran" was probably deemed to confrontational :)
 
2012-11-30 06:27:38 PM
ProfessorOhki: The warning isn't there so people notice the door; it's so they don't try to open them manually and get their hands caught in some mechanism in some unexplainable freak accident that leaves you liable. "Get your hands off the door, moran" was probably deemed to confrontational :)

But there's no handle on the door ... ohh right, morons :D

// thought it was an offshoot of the 'walk into transparent door' thing.
 
Displayed 140 of 140 comments

View Voting Results: Smartest and Funniest


This thread is archived, and closed to new comments.

Continue Farking
Submit a Link »






Report