Stack OverflowWhat real life good habits has programming given you?
[+45] [50] lbz
[2008-10-03 20:43:08]
[ polls ]

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

[+106] [2008-10-03 22:38:42] Robert Rossney [ACCEPTED]

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.

i'm on board for this one - Kevin Conner
Couldn't agree more - prabhu
(5) 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
(5) 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
Given that this answer is a response about my personal experience, editing it to change its focus would be inappropriate even if I were in broad agreement with the edits, which I am not. bignose, if you have an opinion on this subject and/or would like to expand on things that I have said, please find a way of doing so that does not involve attributing things I have not written and do not believe to me. - Robert Rossney
[+57] [2008-10-03 20:47:45] Brett McCann

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.

[+52] [2008-12-03 14:29:47] Robert

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.

(11) 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:… - Pierreten
(4) @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
I do not call these exceptions. I call them non maskable interrupts. - adamo
[+51] [2008-10-03 22:01:11] tzot

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)

(1) 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
(4) last digit is a little ambiguous. Perhaps Least or Most Significant Digit would be clearer. - Tanj
Heh, I still make small uses of this from time to time :) - Halil Özgür
[+34] [2008-10-03 20:45:21] Mil

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

Iterative development solves all problems. - Stefan Kendall
[+21] [2008-10-03 20:44:45] Maxime Rouiller

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

(2) 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
[+17] [2008-10-03 20:58:22] Steven A. Lowe

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

[+15] [2008-11-12 02:34:32] Mike B

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


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

(18) 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
[+13] [2008-10-03 21:39:54] tzot

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.

There are apps for that .. like grocerypal . me and my wife use the same login to the app and thus the data is synchronized between us and available everywhere there is a network. - Hardy
[+11] [2008-10-03 20:48:49] JaredPar

Pragmatic Paranoia

[+11] [2008-10-03 21:32:06] mliesen

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

(3) I did that once and was surprised how quick it was. Then I was like "wow, I'm such a nerd." :) - Paul Fisher
[+9] [2008-10-08 02:55:32] Cristián Romo

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.

(2) 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
[+8] [2008-10-03 21:00:27] Optimal Solutions

I tend to think, before acting.

+1: And be sure to include "speech" as an "act." I'd upvote this once a day if I could. - Chris
[+7] [2008-10-03 20:47:34] StingyJack

asking others (irritating) follow up questions.

[+7] [2008-10-03 20:45:25] Gabriel Isenberg

Effective requirements gathering.

[+6] [2008-10-03 23:23:06] Declan Shanaghy

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.

[+5] [2008-10-03 20:46:54] Ferruccio

Paying careful attention to details.

[+5] [2008-11-10 18:09:11] ParseTheData

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.

[+4] [2008-11-12 02:48:08] wasker

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

[+4] [2009-02-20 03:32:17] TokenMacGuy

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)

That's probably the most intelligent thing I've read all day today! - baeltazor
[+4] [2008-10-03 23:29:55] Chris

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

[+4] [2008-10-03 21:43:56] Michael McCarty

I have a comment about everything

So is this a good habit? If yes, do your loved ones agree?-) - tzot
really? i don't. - nickf
(4) // Me too, me too! ;) - cwap
I'm really not sure this is a good thing. - bcat
[+4] [2010-04-16 16:00:49] dthorpe

Never trust the machines.

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

[+4] [2010-06-03 21:36:20] Ed B

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!

(2) I totally think of food as data now. - Mike Moore
[+3] [2010-02-14 03:06:43] Andriyev

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

[+3] [2008-12-02 11:59:26] jpastuszek

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
[+2] [2008-12-02 21:31:14] Paul D. Waite

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 :)

[+2] [2010-06-04 16:59:50] ergosys


[+2] [2010-06-08 16:38:13] shelfoo

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.

[+1] [2010-09-03 11:16:04] David Foster

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.

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
[+1] [2010-02-14 04:07:30] kyoryu

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.

[+1] [2010-06-03 21:16:06] Andrew Wagner
boolean all;
    } catch(InterruptedException e){  
  }catch(Exception e){  

[+1] [2008-12-03 13:35:42] usman shaheen
  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

Exactly how I work in the kitchen, and it comes from my programming experience! :) - Stefan
[+1] [2009-07-09 00:21:17] Jonathan Deamer

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".

[+1] [2010-01-20 17:12:30] martinr
long Think
(Iam not, sure me) {
  if ((*it->makesADifference)(2, me)) {
  for (LOTS_OF_TASKS);

[+1] [2008-11-10 17:54:01] community_owned

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.

I had this problem until I started going to bed earlier. - ergosys
[+1] [2008-10-03 21:52:16] blizpasta

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

[+1] [2008-10-03 21:07:52] SomeMiscGuy

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

(1) Not really a habit - Agnel Kurian
[+1] [2008-10-03 20:48:04] Firas Assaad

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

[0] [2008-10-03 20:43:52] Kevin Fairchild

Coming up with ways around issues

[0] [2008-10-03 22:10:06] community_owned

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.

[0] [2008-12-02 17:14:10] Rulas

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

[0] [2008-12-02 10:33:59] glenatron

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.

[0] [2010-01-20 17:14:38] Phil

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

[0] [2010-01-31 00:50:52] Stefan

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:

[0] [2009-02-20 03:20:22] Steven Surowiec

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.

[0] [2010-06-03 21:28:01] Maister

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

[0] [2010-09-07 09:31:01] Stephan Muller

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.

[0] [2010-09-22 07:24:56] Strada

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

[0] [2010-06-04 06:42:13] this. __curious_geek

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