'''Programming''' can be a very frustrating thing to do at any level. There are a few things that have kept me going: * Be excited when little things work * Realize that from little things big things are built * Everybody is still learning (even Knuth) * Focus on being the best programmer you can be, rather than as good as someone else * Realize that holy/language wars just bring upset and the best thing to do is to fix the problem, rather than complain * Don't be intimidated by 500+ page books (almost everybody finds them frustrating) * Remember your past difficulties when helping new programmers Please extend this list - [George Peter Staplin]. ---- [MSW]: In fact I '''love''' 500+ pages technical books :) * Enjoy bugs. Remember, they are there to be fixed by you - be excited when you fix that thing. * Enjoy interaction with your users: They will show you ways to use your program you've never thought about before. * Expect credits for minimal, ridiculous changes you do, but don't for abstract flexible frameworks: You get cheered on for what they see. * The smile on the faces of your users when you implement their wishes quickly * Humor. You'll often laugh hard when you read code you wrote years ago - especially if you are now more fluent in that programming language ---- ''[DKF]'' - It's books that are over a thousand pages that are intimidating. Especially when used on cow-orkers... ;^) ---- Keep it down to about 800 pages, like Eric Foster-Johnson's commendably unintimidating ''Graphical Applications with Tcl & Tk'', and you should be OK. As for the "cow-orkers": I used to think the fad of omitting properly placed hyphens in words such as "co-workers" was harmless, but no more. "I've had it with this company! He accused me of ''orking cows!'' I've never orked a cow in my life!" "Oh yeah, tell me about it--you probably sneak out to the Cow Palace and ork cows all night long, or until they come home, whichever comes last!" "Hey, stop that! Break it up! Somebody call the police, quick!" :o) David McClamrock ---- * Sometimes failure isn't really failure. When you '''learn''' from a project it can in a way be considered a success. * Keep reaching for the sky. If you only do coding that is easy you won't make the gains that you may seek. [[Economic absurdities ...]] ---- The most dangerous moment is when you have a vision and say to yourself, "Hey, I could code that!" The next thing you know, no one has seen you for a week and you've perpetrated yet another Tcl object system. -- [WHD] '''LOL!''' So true... so true ''--[ro]'' ---- Perhaps related to this are books like ''The Nudist on the Late Shift'' [http://www.pobronson.com/Nudist_Introduction.htm] [http://www.topwritecorner.com/reviews/review5.html]. I seem to remember a book by Robert L. Glass called ''Hot Dogs and Mixed Nuts: Tales of the Computing Profession,'' but I cannot find any reference to it. It must have been written in the late 70s. David S. Cargo (dcargo@marix.com) ---- [Keith Vetter] I've always liked best the explanation that Fred Brooks gave in the book ''The Mythical Man-Month'' on why programmers spend endless hours sitting in front of a small screen. ''Why is programming fun? What delights may its practitioner expect as his reward?'' ''First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.'' ''Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's fist clay pencil holder "for Daddy's office."'' ''Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.'' ''Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.'' ''Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.'' ''Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.'' ''Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.'' [DKF] - I '''like''' that quote very much indeed. ---- Borrowing a major concept from Peter Naur's "Programming as Theory Building" (Peter is the N in [BNF]): Programming isn't about creating the text of a program any more than science is about creating the text of a report. Much as science is about building theories about the universe around us, programming is about building theories about what's supposed to happen in the computer. ---- [LV] When you reach the point of learning to find out what a user/requestor ''really'' wants, rather than what they '''say''' they want, and move to fulfill that, you reach a new milestone in developing programs as well. Oh - and someone - I forget who right now, in a teleconference on developing and programming, gave these as four keys to a successful team regardless of whether it was of programmers or someone else. Why, they even help the Tcl community. 1. a clear purpose and shared values and goals. 1. developing individual skills 1. an attitude that no one of us is as smart as all of us (leading to development of harmony, synergy, and team skills) 1. repeated rewards and recognition ---- [SYStems] I like that quote ''We the unwilling, led by the unknowing are doing the impossible for the ungrateful. We've done so much for so long with so little we are now capable of doing anything with nothing.'' and for some reason most people would agree that it's pretty relevant to the practice of software systems development ---- [Category Discussion]