views:

13599

answers:

51

Following this question, what real life good habits has programming given you?

A: 

Coming up with ways around issues

Kevin Fairchild
+18  A: 

Always search on Google if you can't find it.

Maxim
And if you can't find it on Google you haven't asked the right question. Sometimes I wish I could ask Google 'What is the right question?'
the_drow
+33  A: 

Solving problems in small steps and not in one maybe overwhelming attempt which never gets finished.

Mil
Iterative development solves all problems.
Stefan Kendall
+7  A: 

Effective requirements gathering.

Gabriel Isenberg
+6  A: 

Paying careful attention to details.

Ferruccio
+8  A: 

asking others (irritating) follow up questions.

StingyJack
+59  A: 

Well to be a successful developer, you have to think about the problem before you try to solve it. I've taken this approach to projects around the house, and have found that doing the proper research, you can learn how to do many tasks, that might have previously seemed daunting. I applied this lesson to carpentry, and have done some room additions, I wouldn't have thought possible. Programming also requires attention to detail, and that is also a good trait to carry over into other aspects of your life.

Brett McCann
+1  A: 

Introduced me to useful steps in solving any problem, using divide and conquer, abstraction, etc. They work in real life too!

Firas Assaad
+12  A: 

Pragmatic Paranoia

JaredPar
+17  A: 

i always take out the trash when i'm out of space ;-)

Steven A. Lowe
+9  A: 

I tend to think, before acting.

Optimal Solutions
+1: And be sure to include "speech" as an "act." I'd upvote this once a day if I could.
Chris
+1  A: 

Being a hero doesn't mean you succeed in saving the day. It just means you tried.

SomeMiscGuy
Not really a *habit*
Vulcan Eager
+10  A: 

I use merge sort whenever I got a big pile of stuff that needs to be sorted.

mliesen
I did that once and was surprised how quick it was. Then I was like "wow, I'm such a nerd." :)
Paul Fisher
+14  A: 

Breaking tasks into smaller, more manageable steps, scheduling those steps with possible concurrency in mind ("honey, can't you change the diapers while I'm preparing meal?").

Also, I've learned that all information storage and retrieval must be handy when needed, so there are notebooks in various parts of the house for all practical purposes (kitchen: "I should buy that", phone: "write down that number" etc), and the written pages are all gathered in a specific place where they can be found.

ΤΖΩΤΖΙΟΥ
+5  A: 

I have a comment about everything

Michael McCarty
So is this a good habit? If yes, do your loved ones agree?-)
ΤΖΩΤΖΙΟΥ
really? i don't.
nickf
// Me too, me too! ;)
cwap
I'm really not sure this is a good thing.
bcat
+1  A: 

Learning about and having to write algorithms make me think about ways to do things more efficiently even in a non-programming context.

blizpasta
+48  A: 

This is not a habit, however it's a real life example of practical implementation of computer theory (thanks, Don K, for the great books you've written :)

Army service (there are countries where it is obligatory, you know), and I and a mate are faced with ~1200 soldier cards that must be sorted by yesterday by captain's orders. Thankfully, the key was a 6-digit number. The mate was worried how long it would take, but I had Vol.2 fresh in my mind :)

So I made ten stacks for digits 0-9, and I divided the cards based on the last digit. Packed them, repeated for the second-to-last digit. And so on.

The procedure took about 30 minutes with a steady pace, and then we sat and had a relaxed, calm time. Obviously (for everyone who's been in an army), when the captain dropped by about 4 hours later ready to start shouting, we said, "oh, we just finished."

(Community wiki because even if you like it, I wouldn't deserve the rep)

ΤΖΩΤΖΙΟΥ
kewl! i applied this kind of algorithm to sort a stack of cards based on a legacy library numbering system (i'm talking before the dewey decimal)
Alan
You gotta love the Radix sort!
Booji Boy
That is awesome!
mezoid
last digit is a little ambiguous. Perhaps Least or Most Significant Digit would be clearer.
Tanj
A: 

Being practitioner. Learning through doing things. Learning most of things in practice. Reading theory won't give much knowdle as actually doing that thing in practice. In other areas of life this helps me much IMO.

+96  A: 

I no longer equate thinking I'm right about something with actually being right about it.

It's now very easy for me to entertain the thought that I may be wrong even when I feel pretty strongly that I'm right. Even if I've been quite forceful about something I believe, I'm able to back down very quickly in the face of contradicting evidence. I have no embarrassment about admitting that I was wrong about something.

That all came from decades of working in a discipline that mercilessly proves you to be mistaken a dozen times a day, but that also requires you to believe you're right if you're going to make any progress at all.

[bignose] This discipline is much more native to the scientific method, of course: coming up with a solution is easy, it's not until there is solid evidence, demonstrating the solution in the face of attempts to disprove it, that it's of any value. I see this convergence as a sign that programming is finally becoming enough of a science that blind faith is beginning to be seen for the nonsensical position that it is.

[Robert Rossney] I disagree in several respects, not least in that it doesn't really have much to do with what I was describing.

The practice of open-mindedness that I'm talking about is orthogonal to understanding the universe through controlled repetition. There are people to whom the experience of feeling wrong, and the action of openly admitting error, are unpleasant, even intolerable. Remaining open to that experience, even embracing it, is a practice that is more spiritual than scientific.

Sure, the best scientists have to cultivate this ability too in order to withstand the emotional process of investigation. But plenty of scientists don't (which is why we know who Thomas Kuhn was), and plenty of people who aren't scientists do.

And I vigorously reject the idea that we're somehow suddenly seeing that blind faith is nonsensical. Find me a software developer who's willing to stand up for blind faith. What we're not willing to say is that what we are doing is often engaging in faith, and that it this faith is sometimes blind.

Robert Rossney
i'm on board for this one
Kevin Conner
Couldn't agree more
prabhu
I really love your ending sentence: a discipline that mercilessly proves you to be mistaken a dozen times a day, but that also requires you to believe you're right if you're going to make any progress at all.
hasen j
Why is this not the accepted answer?
Chris Lutz
im exactly with you on that one. I'm always doubting myself unless I have proof to show. I guess lawyers would be on board this one as well.
Mike
+7  A: 

I think the 2 biggest life skills I've developed are

1 - Problem solving

When faced with a situaition/problem i analyze my options and the pros/cons that go along with each. In the end I select the options which work best for all parties involved in "The Plan"

2 - flexibility.

The ability to change "The Plan" on the fly and without a fuss when a certain aspect of it fails.

Declan Shanaghy
+5  A: 

Tackle life's challenges in iterations. In other words, tackle problems one step at a time; doing something is always better than doing nothing.

Chris
+10  A: 

The ability to give instructions or present ideas in a clear, precise manner. It's pretty rare nowadays that I can't explain almost exactly what I mean.

Cristián Romo
unfortunately, 1) humans are not like computers, so they're not likely to understand. 2) It takes quite a long time to write programs. If it takes as long to say a few sentences, we're screwed.
hasen j
+1  A: 

I tend to focus too much. I sometimes blank out, people have been unable to awake me. Then all of a sudden, I break out of it, having achieved what I want.

+6  A: 

I'd have to say that I think more carefully than I did before, it actually encourages me to see how things work in real life, whether it be programming, nature or sports! It opened my mind to these things and I think it is really paying off; in short programming has made me more curious, without a doubt.

ParseTheData
+18  A: 

There is one habit that programming teaches a person that many fields struggle to carry across.

Friendliness!

I am a useless programmer, still being fairly new to the whole thing. If it were not for the help of people on this website and all across the Internet I would struggle deeply with many of the scripts and programs I have written in my time.

This is why I hate the latest trend on StackOverflow of users leaving rude and impolite comments for those looking for help on simple problems or for their homework. It is of no concern what their work is for, only that they need help and that if I were in their position I would really appreciate some guidance

EnderMB
What many people mistake for unfriendliness is rather succinctness and a wish for the asker to learn for themselves. Give me a hint as to where to go, not the answer on a silver platter, and I'll remember it for next time. This, of course, frustrates people who do not wish to learn something in the first place, which is a condition that we sometimes mistakenly believe to be non-existant.
Xiong Chiamiov
+5  A: 

Optimization! Try to find to cut the time spent on cleaning or laundry.

A: 

Problem analysis has been a big one- breaking the big problem into smaller ones, eliminate variables wherever possible- I use all of this the whole time in my horsemanship and in pretty much every other facet of my life.

Also I've become much more aware of the value of creating tools to support a project rather than just focussing on the project itself and the value of maybe paying for something that will make the work I need to do a lot easier.

glenatron
+2  A: 

Logical and calm approach to real live problems. Also I tend to optimize things I do like shopping or even how I park my bike. Also I like to keep things in order so I don't waste time later on.

Hmm... parking my car... First fit.
TokenMacGuy
A: 

No more "almost" in my life and no more troubles with my girlfriend is just try catch ñ_ñ

Rulas
+2  A: 

Prioritising problems. Programming can be an exercise in creating solutions to non-existent problems, but as I’m not much of a programmer I think I’ve got pretty good at spotting the problems that are worth solving.

Unfortunately, they don’t always match up with the things that clients ask for :)

Paul D. Waite
+1  A: 
  1. think before start doing anything
  2. optimization
  3. start to do multiple tasks in parallel
  4. attention to detail
  5. google/research before solve a problem
usman shaheen
Exactly how I work in the kitchen, and it comes from my programming experience! :)
Stefan
+51  A: 

I now tend to think of everything as objects so now when my wife throws an exception I simply catch it and deal with it and move on.

Sometimes though it's an exception I wasn't expecting which is the nature of exceptions after all. Life simply stops working until I go over the same ground again and again looking for the previous erroneous statement which the debugger (in this case my wife) is unable to accurately express. The replies I receieve often leads me up the garden path and around the trees until I spot my mistake and correct it and try again.

Robert
My wife doesn't throw exceptions. If I proceed without carefully observing her responses for error status then there's a real chance she'll give me a complete core dump.
James Iry
This is so epic
Pierreten
By the way; Reddit prog says hi: http://stackoverflow.com/questions/168805/what-real-life-good-habits-has-programming-given-you/337291#337291
Pierreten
@James. `On Error Resume Next`
Chetan Sastry
You don't need to view the world as object oriented to have exceptions.
J. Pablo Fernández
A: 

For me the opposite of this is true. Programming has brought very few good habits to my everyday life. But my every day life is constantly bringing good (and sometimes bad) habits to my programming. For example, I used to be the worst programmer in the world when it came to comments. I found it was largely because I tend to be a very unorganized person, but as soon as I forced myself to be more organized in my every day life (taking better care of the bills, keeping the house, especially my desk, clean) the benefits to my code were noticeable immediately.

Steven Surowiec
+5  A: 

I'm not sure it affects my daily life in this way, but it gives me a vocabulary. I look at the way my boss uses his computer. He seems to be an event consumer. He watches the screen until it enters a state where it is waiting for him to respond, then he provides the requested data. His work gets done deterministically in the order it is started (He uses a priority queue.) He's got one big mutex, and if its locked, well, you can try again later.

I am an event producer. I fill the computers buffers with requests to process as quickly as i think of them. If one consumer becomes full, I'll asynchronously continue to add requests to other consumers. Work gets completed, but not in any particular order. My interrupt handling routines are a bit buggy, so sometimes, when work gets added, the current process segfaults.

This gives rise to one of our most frequent conversations "How are you working with so many programs open?" (him) and "How do you get anything done with just one program open?" (me)

TokenMacGuy
That's probably the most intelligent thing I've read all day today!
baeltazor
+1  A: 

Using the correct terminology when talking about a technical field, or at least to someone who's specialized in a certain area. eg. it's not a "suspension shock absorber thing", it's a "beam axle".

Jonathan Deamer
+1  A: 
long Think
(Iam not, sure me) {
  if ((*it->makesADifference)(2, me)) {
    butIOftenThink();
    HAVING_AN_ALTERNATE_WAY_OF(Looking_At_Things);
    H_elps(me);
  }
  for (LOTS_OF_TASKS);
}
martinr
A: 

It has turned me into Sherlock Holmes. I have an elevated sense of analyzing and problem-solving.

Phil
A: 

I allways try to see problems and difficulties in life from different angles, and break down big problems to small solvable ones if its possible.

Working with a wide range of clients and know how to follow up to get most information out of what clients think they want, and what they really want and so on, have made me much better to listen to and understand people, to see their point of view and understand why they have that point of view.

And in the kitchen I use allmost exactly the points usman shaheen wrote: http://stackoverflow.com/questions/168805/what-real-life-good-habits-has-programming-given-you/337118#337118

Stefan
+3  A: 

Never to under estimate a bug (no matter how trivial it is).

Andriyev
+1  A: 

Test-driven development, specifically, has gotten me in the habit of thinking about the desired end before I start, and focusing on outcomes rather than processes. This has helped me tremendously in many areas.

General project management has helped me with prioritization and tackling large problems.

Programming has helped me think more clearly about things, and less vaguely, while still giving me the ability to think about appropriate abstractions.

kyoryu
+3  A: 

Never trust the machines.

(because machines/software is built by humans, and humans make mistakes)

dthorpe
+1  A: 
boolean all;
if(all){  
}  
else{  
  fails();  
  try{  
    try{  
      again();  
    } catch(InterruptedException e){  
    }  
  }catch(Exception e){  
  }  
}  
Andrew Wagner
A: 

I was a group leader on a rather large school project lately. Memory management certainly helps in real life as well. :)

Maister
+5  A: 

It's helped my in my cooking...from gathering requirements from the family for meals, designing recipes, cooking, unit taste testing, and acceptance taste testing.

By using agile methodology in the kitchen, I can better adapt to requirement changes from my picky kids.

Extreme Cooking even comes to play when my wife does recipe reviews, does pair cooking with me or helps with the unit taste testing.

Daily releases keep the family happy and keeps the leftovers to a minimum.

If only I could figure out how to implement automatic builds!

Ed B
I totally think of food as data now.
letseatfood
A: 

Over optimize almost everything, try to be perfectionist and give attention to details.

this. __curious_geek
+2  A: 

succinctness

ergosys
+2  A: 

Tenacity. I don't give up on anything anymore.

This probably comes from the nightmare of maintaining a legacy system written by bad developers chock full of almost-never-repeatable bugs. If I'm having problems with something IRL I just continue to try and find the cause.

shelfoo
A: 

Hacking!

TheMachineCharmer
+1  A: 

I now use zero-based indexing when counting objects in the real world. It's great because when talking to an attractive female it turns out I have precisely zero girlfriends.

David Foster
You fail to distinguish cardinal and ordinal numbers.
reinierpost
Ah, geez. C'mon man. You knew what I meant, right? You got the joke, right? Can't that be enough? You fail at being a nice, happy human being.
David Foster
A: 

Programming in combination with stackoverflow (and other forums) taught me to try and word my problem in a way that somebody else can understand it. It happens often enough that I go to stackoverflow, a forum or even start typing a message on MSN to a friend, and halfway through my question I suddenly realize the answer.

Thinking back I definitely have used this method in real life in the past, maybe not always by writing it down but by asking myself how I would explain the situation to (say) my girlfriend. It helps.

Litso
A: 

Without a step by step approach to solving real life problems, u a certainly going to miss out on something that can have greater consequences than the initial problem

Strada