
What real life good habits has programming given you? (2008) - luu
http://www.stackprinter.com/export?service=stackoverflow&question=168805&printer=false&linktohome=true
======
thomasfl
Programming has learnt me nothing but bad habits. A tendency to read HN
instead of doing proper work. Constantly forgetting to go to bed in time,
staying up all night in stead, constantly being woken up by the all too bright
hypnotising monitor. A habit of contacting people by sms, e-mail or facebook
rather than in real life. The list can go on forever.

~~~
cfontes
One think that I've been noticing over the years is that my brain has been
rewired to find problems in things.

Whenver someone shows/tells me something I instantly start to search for holes
in it. I don't actually think about it. It just happens, my wife complains a
lot about it.

~~~
organsnyder
I describe myself exactly the same way. For me, I think it's two separate
components:

\- For an existing system (of any kind - mechanical, legal, social...), I
automatically look for things that can be improved.

\- When discussing a new idea, I'm always mentally jumping ahead to the
implementation phase, where potential problems quickly jump out at me.

I've considered it to be just part of my personality rather than specific to
programming, but since I first learned to program at age 7 it's difficult for
me to distinguish the two.

------
Kenji
Programming has taught me not to be content with vague ideas. It's always easy
to give hand-wavy solutions. Formalize it or you haven't solved it.

~~~
visakanv
Reminds me of my boss's favorite quote:

> "Everything is vague to a degree you do not realize till you have tried to
> make it precise, and everything precise is so remote from everything that we
> normally think, that you cannot for a moment suppose that is what we really
> mean when we say what we think." — Bertrand Russell

------
xamuel
Biggest thing for me is to stop prematurely over-engineering things. Need
something done? Just get it done, however possible. If, in future, you need to
do it many more times, you can gradually optimize the process as you go. As
opposed to letting the perfect kill the good in the first place.

------
khalilravanna
Practice as a habit.

Practicing something repeatedly, preferably every day, is the best way to get
better at something. I started programming every day after being inspired by a
blog post by John Resig that got posted to HN [1]. I started a game that I've
been working on for 245 days straight. I started with almost no knowledge of
game programming and now have, I dare say, a playable game. Github really
helped with this because you get a nice display of your commit history over
the past year that gives an incentive to not break the chain [2].

I've been able to apply this to other skills I've wanted to get better at:
relearning how to play the piano, making music, working out, etc. and have
seen great results.

1\. [[http://ejohn.org/blog/write-code-every-
day/](http://ejohn.org/blog/write-code-every-day/)] 2\.
[[http://i.imgur.com/6zq1IbJ.png](http://i.imgur.com/6zq1IbJ.png)]

------
darkxanthos
Clearly specifying what I mean and using precise language. I never understood
the importance of that until a few years of programming.

~~~
imjared
This. I'm still a young gun with only a few years under my belt but the
combination of writing code and working with clients who need code written has
made me realize the importance of communication. I've been able to take the
precise communication that I'm forced to use in my work (be it with a system
or with a client) and use it in my hobbies and organizations I'm a part of.

------
mschaef
I've been programming since I was 8, and I'm now fast approaching 40. This
makes it a bit hard for me to isolate the specific influence of programming on
my life habits. That said, I do have a couple thoughts on how programming
might have been helpful.

For context, the systems I work in are typically nowhere near perfection. This
leaves me with a continual list of things to be done that ranges around 5-10
person years of effort to complete. Because of this fact, I have had to learn
to be tolerant of the imperfections, organized enough to keep a long-term plan
in focus, and tactical enough to fix things in a sensible order. It's also
been useful to develop an understanding of when costs are sunk and when ideas
aren't worth further development.

I'd say that all of this has been useful in my day-to-day life.

Something that's come to me more slowly is the human aspect of software
development. My earliest programs were all one person affairs: I'd be the only
author, reader, and user of the software I wrote. The older I've gotten, the
more interesting it is to write software that other people can contribute to,
understand and use to better their life. Learning how to build systems that do
that is teaching me a lot about design, empathy, and how to think outside my
own head. This is still a work in progress, but it's been very rewarding.

------
yitchelle
For any problem I face in real life, I start to break it down to make it more
manageable pieces. Eg, my wife would say the bank is over charging us in their
bank feeds. I would break that down to what fees are we talking about, how are
we using the accounts to cause the fees etc. It drives my wife nuts.

One bad habit that could be attributed to programming is that I don't remember
much anymore. I just jump into SO or wikipedia etc to get the information, and
I also keep a bunch of notes in my pocket for "all the things I need to
remember".

------
ninjaoxygen
Not to sit around speculating about how something may work or what may be
faster when a test case can be built that quickly proves which works or is
faster.

------
Khao
Mirror/cached version :
[http://webcache.googleusercontent.com/search?q=cache:4RhIBeM...](http://webcache.googleusercontent.com/search?q=cache:4RhIBeMizh4J:www.stackprinter.com/export%3Fservice%3Dstackoverflow%26question%3D168805%26printer%3Dfalse%26linktohome%3Dtrue%26utm_source%3Ddlvr.it%26utm_medium%3Dtumblr+&cd=1&hl=en&ct=clnk&gl=ca)

------
fit2rule
I no longer just believe what I'm presented with - I have to debug, dig
deeper, look beneath the covers and find out what is causing the phenomenon.
My wife often complains, but once I get that debugger fired up and start ..
slowly .. stepping things through, it all comes out in the end.

~~~
pjc50
_My wife often complains, but once I get that debugger fired up_

How are you attaching the debugger to your wife?

~~~
visakanv
+1, I am also curious. All attempts to debug my wife so far have been
frustratingly inconclusive.

~~~
elektronaut
It's easy to blame an upstream bug, but in most cases, it's usually an
implementation error on your part.

~~~
visakanv
Indeed, I am guessing this is most likely the case.

~~~
fit2rule
Hint: Batteries not included.

------
kendallpark
Programming taught me to stop wasting time theorizing and arguing with
anecdotal evidence when I should be implementing and testing my hypothesis. It
taught me that sometimes extensive planning is not as important as being able
to react and respond to problems as they come.

------
V-2
Attention to detail, eg. an eye for typos.

Learning by doing > learning by reading (although it cannot replace the
latter).

Not getting emotionally attached to my solution only because it's mine.

------
pixelcort
Patience and trust.

When others say something will take longer than I would expect, I trust them
more. They're the ones who are doing it; they know the details that I don't.
And it would take too long to make them explain all the details to me. And as
they work on it and realize it will take even longer, I have sympathy because
boy have I've been there myself.

------
malux85
\- Leave something in better condition than you found it

\- Take a little extra time to be thorough

\- Nullius In Verba (On the word of no-one) i.e. See for yourself

------
emptytheory
I question the top answer as being a good habit at all. It's like saying
"there's probably some magic going on that I'll never understand". There's a
reason why you're wrong. You should probably find out and absorb the reason
instead of pretending like the world operates in some mysterious way.

~~~
icebraining
I don't think that's what he's saying at all. It's closer to following a
scientific approach; what you "know" is simply a more or less wrong model of
the reality. You may study something "magical" until you understand it
completely, but you _still_ must be prepared to revise your knowledge if
suddenly you learn something new that goes against it.

~~~
emptytheory
Programming systems can be treated scientifically, but they can also be
treated deductively (like math). It's possible to have full knowledge of
what's going on if you treat it like a deductive system. If your primary way
of learning is through experiment, then yes, you will be wrong a lot of the
time. But then I would never claim you had a good reason for believing
anything.

I can't view the stackoverflow link right now, but the top answer basically
claimed "I feel strongly about my reasoning, but nevertheless, I could be
wrong". How could that be unless you made a mistake? The system is logical!

------
ajuc
Good things:

\- thinking in graphs and dependencies

\- intuitive understanding of 3d vectors and matrices operations

\- a few really useful tricks when troubleshooting anything (this thanks to
debugging a lot)

\- reading and writing in English

Bad things:

\- laziness (I already know how to do this, what do you mean I actually have
to do it, too?)

------
akyu
Learn the hotkeys/keybindings, and the equivalent in real life applications.

In other words, invest some time in learning the most efficient manner to do
seemingly mundane things. It pays off in the long run.

------
MickerNews
Spelling and grammar are an obvious one. Less obvious is an improved ability
to think critically and spot flaws of logic in arguments.

------
Thiz
I am a walking logic gate. Everything is binary for me.

Every choice is a decision tree and every action is an algorithm.

~~~
hultner
–Honey could you check if we've got any milk and go to the store to buy some?

 _Programmer logic mind interpret_

    
    
      if(fridge.contains(Consumable.milk) &&
         legs.walkTo(location.getMarketNearest(this.location))
      {
          store.buy(Consumable.Milk);
      }
    
    

Well since we didn't have any milk I'll just go back to idling.

~~~
FreezerburnV
I was about to point out the "bug" in your "code", but then I reread the
sentence. And now I need to use this as a joke with my wife. I'll probably get
punched jokingly for this one, as with all my bad jokes :P

------
gcv
Reading this thread, it becomes obvious that we have all picked up one bad
habit: OCD.

------
icebraining
Yeay, another opportunity to rehash the tired discussion on SE's policies. I'm
sure it won't be filled with the same arguments as all the other threads /s

