Hacker News new | comments | show | ask | jobs | submit login
What real life bad habits has programming given you? (stackoverflow.com)
45 points by danw 3159 days ago | hide | past | web | 87 comments | favorite

Two stick out:

1. Answering questions fairly literally.

a. "Did you like the salad?" "No, I did not."

b. "Would you like to go to the fine art museum with me and 4 of my friends on Friday night?" "No, I would not like that."

c. Note that I can escape from this pattern only when it's extremely obvious the truthful answer is a bad one.

"Do these jeans make my ass look fat?" "I don't think it's the jeans..." I can avoid those at least...

2. Intentionally filtering out mundane trivia from my brain. "Do you know so-and-so's phone number?" "No, but it's in my phone." "When you left this morning, did you notice if my black gloves were on the counter?" "I would never notice them unless they were on fire or something..."

I wish I could give you more karma on this comment. This sounds just like me and it is hilarious. I also find that people say "You know what I mean" to which I answer "yes". They interpret this as "yes and I agree", but what I really mean is "yes, I hear the words coming out of your mouth, and I believe I understand their meaning".

Along those lines, I find myself increasingly impatient with the verbosity of spoken English. Many times someone will ask me something, and before I even start explaining my reasoning, I think: "is accomplishing this worth the time commitment of explaining it?" ... sometimes it is not, so I simply just say "nevermind".

When it comes to responding to questions, I'm pretty sure this just makes me look rude. When asked about the salad or museum, I'd just reply "No." About the phone number: "Yes" (then I'd look it up in my phone). For the gloves: "Yes" (I tend to remember stuff like that). All the rest just seems extraneous and time-consuming to say, especially when it can be inferred by the listener if they would just think it through.

There could be a correlation between programming and the habits you've pointed out but correlation does not imply causation.

Correlation implies synergism!

Everything must be good or bad, old or new, high or low, black or white, 1 or 0.

I can't randomly walk through any mall, park, or neighborhood because I might miss something. All events must be sequential.

When I'm at a client site, I interpret everything.

When the restaurant hostess asks my server's name, I say, "Univsrv1".

When invited to a networking event, I bring my toolbox.

I can't start anything new without a Mountain Dew and a bag of Lay's.

When doing anything for the first time, I imagine test cases before I proceed.

I keep trying to "click" by gearshift.

I clean everything in my house with a 50% distilled water/50% isopropyl alchohol mix.

I keep looking for "alt-tab" on my TV remote instead of "Last Channel".

My cats are named Instance 1, Instance 2, and Instance 3.

I use the simplex method of linear algebra to fit everything in my freezer.

I never drink beer until after the final build of the day. (actually true)

I refer to my girlfriend's weird friends as "outliers".

Every time I say "outlier", I worry that my girlfriend may deprecate me.

It's over developed my already prevalent logical thinking. This is great because I'm known as a clear thinker that can solve complex problems, but I've found that a lot of people have difficulty thinking in these terms, preferring to remain in a more emotional pattern.

End result is that it harder to relate to more and more people, which remains important. I'd imagine this happens to most programmers, although I don't think there is a good appreciation for how significant this is generally.

Worst bits:

- You can tell someone the answer to their problem, and they just stare at you, confused, while their emotions have to deflate.

- When you realize you're talking more abstractly than they can understand.

- Or they argue really basic stuff, as they've never been exposed to it. E.g. language alters thought.

It's like talking to some sort of organic thing instead of what you think of as normal. Perhaps later humans and programmers will diverge genetically?

Actually, the worst part is thinking there's something wrong with them, when in reality you're the weird one. :-)

Hey, between them, me, and the computer, I win the vote. They're the strange one dammit.

I feel this too. The key is to not receive what other people say as bug reports, so you won't get the urge to fix them or find a solution.

True enough, that's a good way of putting it.

That's extremely difficult to though as a manager!

Whenever I pay for something in cash, I'm trying to make it so that the change I get back requires the least notes or is simpler.

For example, if I owe $7.84, I might give $13.09 so that I get $5.25. I sometimes get confused looks. Related to that, I don't like having more than 4 $1 bills. I feel like, at some point, I didn't give the cash I should have.

I do this too! Only sometimes I confuse myself and end up looking like an idiot.

I picked that up after I spent some time in China, where it's a common enough thing that nobody thinks twice when you do it. But back in the US, it gets a lot of strange looks.

Not really connected to programming, but: I used to always grab 3 quarters, 2 dimes, a nickel and 4 pennies. That and the M&M thing...

Me too, only it's easier here because 1c and 2c coins have been removed from circulation so you round to the nearest 5c.

where is here?


God Bless Australia. I love that country, and I really liked how tax is already included in all prices and payment is rounded to 5c since there are no 1c pieces. It makes payments so much simpler.

Constantly wondering if people mean `or' or `xor' (I mean xor)

"Lunch specials include salad or fries"

"Great, I'll have both!"

Related: when people ask me if I'd like "A or B" I wonder if people mean "A || B", to which I'd reply with true/false, or "max(A, B)", to which I'd reply with A (if I have higher preference for A) or B (if I have higher preference for B).

Here are two unambiguous examples:

"Are you a US citizen or permanent resident? Yes [ ] No [ ]"


"Would you like coffee or tea?"

In some settings, when they ask "A or B", it's hard to know which of the following set are valid answers: {{}, {A}, {B}, {A,B}}

I find it's most often people say "or" when they mean xor, and "and/or" when they mean or.

So perhaps we should start saying either "or" or "ior" (inexclusive or).

The "and/or" thing actually sort of makes sense if you take "or" to mean "xor", since (A XOR B) OR (A AND B) equals (A OR B)

So, slash is really 'or'?

Oh, my head.

    english   logic
    -------   -----
    and       AND
    or        XOR
    /         OR
Actually, since (A XOR B) and (A AND B) are mutually exclusive, (A XOR B) XOR (A AND B) also equals (A OR B), so "/" could be "XOR" too.

Biggest problem I have: Years of finding surprising bottlenecks and bugs where you least expect it has lead me to question every line of reasoning\anecdote people say unless they are able to back it up with something sufficient.

Maybe it's the correct thing to do, but it also annoys the shit out of people when I ask them if its possible that their single data point could have been an outlier or just a complete misinterpretation.

Have a condition where I always need to carry some single-day use medical equipment around.

I have created a mental invariant that says that unused, spare units are in my right back-pocket, the one that is currently in use is in the left front pocket, while the left back-pocket is for trash.

This allows me to easily "poll" for whether I'm equipped to leave home, and has made sure that I have not once in 15 years found myself without it. I attribute the success of this system largely to my "programmer mindset".

You should hack lifehacker with an 'article ;-)

Trying to remove duplication in everything.


Constantly skimming text. I always find myself resisting the urge to skim through blocks of text like I would through code while looking for bugs.

I've caught myself thinking of time in complexity classes.

Eg. should I walk or drive? It doesn't matter, they're both O(n).

When I'm driving, I'll make the decision on passing someone or not depending on whether the resultant speedup is O(1) or O(n).

Walking would be O(n^2) for all but the shortest distances actually, I think. Unless you rested once in a while. Amortized linear time?

How do you figure?

Does walking continuously for 1000km merely take 100 times longer/more effort than 10km?

Good point, but you answered your own question: the "walk then rest" algorithm will do it in linear time.

null pointer on your drink-bottle instance results in fatal runtime exception.

Pun intended?

da-da-chhhhh. you're quick ;)

Not really programming but using computers in general - I tend to identify fonts in billboards and magazines, which makes my partner cringe.

Poor sleep habits.

When I can't find something in my apartment, I lose a moment thinking I can grep for it before I start a traditional realspace search.

Not being able to pick up on hints, ever, or otherwise be able to work with incomplete information. If I don't have all the arguments to a function in my brain, I just ignore it until the rest fall into place. Sometimes people specifically leave those out, so I'm lost until it's too late.

Have you tried currying?

"There's a sandwich in the fridge, if you're hungry."

"No, there is a sandwich in the fridge whether or not I'm hungry. In fact, if I'm hungry, it's more likely that there is not a sandwich in the fridge, since I would have eaten it by now.

I hate Magical Grammar -- any sentence structured so that the existence of a need leads to the existence of a means of fulfilling it is annoying.

I believe it's meant to be read "It might be useful to you to know, if you're hungry, that there's a sandwich in the fridge." However, "It might be useful to you to know" is a universally applicable prefix to every single statement people make--otherwise, why would they be saying it?--and so it's dropped, even when the other clauses in the sentence happen to refer to it instead of to its subjunctive.

Sometimes I get really annoyed that I can't automate all the boring parts of my life in the same way I can do (and I always do) in a computer.

From the top of my head: dishes, picking clothes, paying bills and banking in general (I would be willing to pay $100/month for a bank that provided me a good API instead of forcing me to use their crappy stupid websites), organizing physical stuff (why the fuck can't I have "garbage collection" for what is in my room?) and dealing with my car (I have to fill it in with gas every time).

You do actually have to run the Garbage Collection thread/function every so often. The key is to not use mark and sweep, but rather to time stamp everything when you use it. Get rid of the emotional attachment. If you have not used something in a while but your caching algorithm for the item says you might need it again, swap it out (to a box in the garage, get it out of your sight). Otherwise get rid of it. Periodically, throw out everything in the slow-to-access storage (the box in the garage).

The problem with using mark and sweep when trying to garbage collect your life is that the default method is just to mark everything and never actually sweep.

I keep a lot of things sorted. For example, my wallet's money is always sorted.

With multiple denominations of bills, the insertions aren't O(1) when I'm in line if you know what I mean.

I always do that too, but I never really thought that anybody could NOT do that :)

I do this all the time - all bills have to be the same orientation and in order of smallest to largest value. If I take a few out of the ATM I'll stand there sorting them for a few seconds annoying the people queueing behind!

I perform insertions of multiple denominations by pre-sorting the new bills and then just merge with wallet bills.

It's given me a nasty drug habit.

Caffeine is a hell of a drug.

When I count things (in the real world), I now have a bad habit of starting a zero.

"How many floors on that building?"

"Let's see, 0, 1, 2... oh wait..."

Wait, that's what some countries do--ground floor != first floor.

Yes, in good old Blighty, for one (or, should I say, for zero).

I remember counting from 0 when I was young, while all the other kids counted from 1. I considered myself right then and still do. That was well before I had any exposure to programming. Guess I was born for this profession.

Fence-post error. Are you counting the floors themselves or the distance from the ground?

I was actually trying to figure out where my window was on the outside of an office building I work in (5th floor). So I started with 0 which would have meant I would be looking at the 6th floor, not 5th.

1- Always trying to start something as soon as possible ensuring others that it would be improved in next iteration. even things like buying clothes, shoes and eating

2- using too much technical jargons in my discussions (switch, multitask, exception, stack etc)

3- finding bugs in almost everything. tv shows, movies, direction, games, house architecture, roads, street lamps you name it

4- getting frustrated in social gatherings, thinking "Why are all these people talking about so stupid things?" or "why dont they just get to the point?"

5- guessing what people are gonna say or do and preempt them in their discussions/actions

I learned to program when I was really young and I can't help but think that it gave me my OCD. A bit of CBT and some "mindhacks" of my own have almost got rid of it now though.

Another one I had as a kid was writing the number zero with a line through it. That's how it was on the BBC Micro and my schoolteachers couldn't understand why I wrote it that way too.

I guess another one is being a major advocate of US English (I'm English) but I'm not sure if that's due to programming or because, well, it is a better dialect.

For God's sake, don't use our punctuation rules.

  # Carefree means "free from care or anxiety." (American style)
  # Carefree means "free from care or anxiety". (British style)
That has bugged me so much that, unless it is being proofread, I intentionally use British-style quotes.

One of the nice things about the English language is the difference between U.S. and UK rules, so you can mix and match them to your own taste and people can't tell you you're doing it wrong.

So for example I write "center" not "centre" but "axe" not "ax".

I do this too.


Not so much that programming has given me, but constantly having to come up with analogies to explain highly technical concepts to my non-technical co-workers has invaded my life.

"See, your username and password are like a combination lock, where the Kerberos ticket is a key. When you authenticate to the portal, you hand the key to the website, which validates it, and lets you in... but the key is actually in your browser, so it does that all transparently."

Oh, and then the followup... "Yes, the key is invisible."

Always in bug-fixing, problem-solving mode instead of just listening (which is sometimes all my spouse/kids want)

what can i say? i lather, rinse, repeat.

lather, rinse, repeat. lather, rinse, repeat. lather, rinse, repeat. lather, rinse, repeat...

showers take a while

Hey, at least it's tail call optimized. It could have been lather, lather, lather, lather, lather, bottle empty, rinse, rinse, rinse, rinse, rinse...


I recently interviewed at a place where they had set up a tip jar -- you had to put a quarter in it if you were caught pedantically correcting someone.

Eventually it devolved into merciless trolling :)

Pedantry and a penchant for terse and obtuse responses.

Wife: Have you seen my handbag? Me: 404 not found Wife: Can I take £10 out of your wallet? Me: 403 forbidden


That should come in handy if you don't already know about it. :)

I treat a lot of things I shouldn't in a functional way... this begets that, and other such methodical thinking. perhaps it is more of a side effect of coming out of the zone or something, but it seems to take more and more of a conscious decision to step out of that mode... and that's hard to do with the remaining hours of the day.

I solve problems by asking yes/no questions. And, by golly, you'd better give me a yes/no answer. No blah blah blah, no roundabout story. Just say "Yes" or "No," dammit!

If I'm ordering food at a place like Subway, I'll list the toppings I don't want if it's shorter than the list that I do want.

I'm annoyed by stupid/lazy/inept/sloppy people. But I try not to show it - because I really dislike pedantry as well.

I don't think programming has given me any "real life bad habbits."

I get the feeling that a lot of the things people have listed are things they do because they like the idea of them, and actually do on purpose rather than habit.

My worst one, that annoys me greatly, is that I always write "go to" (as in "I need to go to the shops") as goto.

I doubt this is a problem for the kids but I started in early BASIC and used goto an awful lot!

programming has taught me 1+ 1 = 2

life has taught me 1+1 = 4-2 = 3-1 = 5-3 = 2 and so on.

A really bad case of OCD.


I can't think of bad habits, only positive ones; plenty of them!

(Maybe it's because I don't use a poor language?)

Is it garbage collected?

Apparently mine isn't, I've got to take it out every Monday...

I cant do math. I suck at it, i can understand it, but i have a hard time going through the calculations. I do all sorts of dumb mistakes, and always miss something. Its the details that get me. I find this to be my greatest challenge, because i have some serious math exams coming soon. Somewhat related, I cant seem to be able to study stuff that are not interesting to me. I have a big exam, i should study, NOOOO, i dont whanaaaa, whaaaaa.... I whanna hack, i dont whaannnt to studyyyy...whaaaa.... I find myself whining in my head very often. I guess i should just shut up, and do my studying, and maybe hack later...

Applications are open for YC Winter 2018

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact