Last week, I asked the question Where does your sense of accomplishment come from? I'm reminded of this because of a related experience I just had.
I've been working on some code that will become public and when a new offering launches on the Yahoo! Developer Network in the not too distant future. I wrote my Perl code using a mix of reading the documentation and translating the existing PHP examples. I built some basic sanity and error checking in along the way and then tried it out.
It Just Worked.
And that was immensely satisfying. Not just because it confirmed that I hadn't completely lost the ability to write code, but because there was no frustration, confusion, or ambiguity involved. The service did just what the docs said it would do and my code handled the edge cases I intended it to.
It's so rare that things work this way in other parts of life that I really had to stop and enjoy the moment. It was then that I realized that this was a completely unexpected trigger for that sense of accomplishment I had written about earlier.
[I'm sure someone will insert the standard "that's why I use a Mac" response in the comments.]
Posted by jzawodn at July 13, 2006 04:23 PM
I can relate to that one. I've had headrushes from getting a new biological assay to work simply by adapting the protocol to use our own antibodies or nucleic acids. (Usually you account for repeating the procedure several times - sometimes taking weeks - to determine the proper conditions and dilutions.) Its the reason why I worship Lab Gods but am atheistic in all other aspects of my life. :)
This happened to me today and I just about cried. I have been playing around with Python and Cocoa to varying degrees (pyobjc) and have found it to be vaguely frustating at times to learn too many things at once. Today, I decided to finish a little proof-of-concept application that figures out how much motion there is coming in from an iSight and sends that information to a sound synthesis server over UDP. In other words: I want to wave my hand in front of my macbook and hear it make some noise. The iSight code (and the app) are in Objective-C and the network code is in python. So, I sat down at the coffee shop, added about 60 lines of code (most of it in a language I'm just learning, objective-C), hit the double-broom, hit "Build and Run" (waited for error messages, got none(!)) saw my little app running, waved my hand, and heard sound. Ahhhhh... I LOVE it when this happens.
I had a similar feeling after squishing a bug in some code that I'd been trying to track down off and on for quite some time. There was a brief moment of bliss after trying one more time and having the bug finally fixed.
I suppose this is more of an opposite example from Jeremy's, but the sense of accomplishment was the same.
I'll continue my theme from the prior "accomplishment" post.
I suggest that your sense of achievement was not primarily because your coding effort was successful on the first try. I believe it was because of what did not happen next: you did not debug, you did not recode, you did not have to lift a finger. You could sit back and do nothing. Your effort won you the prize we all strive for: idleness and rest. Ahh..
I was going to say And That's Why I Use A Mac , but I've been wrestling with getting my new Apple airport extreme base working with a airport express base hooked to the stereo on my deck and wirelessly to my Dell notebook. They do not Just Work. The Dell keeps connecting and disconnecting after trying and failing to acquire an IP address via DHCP eventhough I have the wireless card setup with fixed ip settings. I'm not sure why the two apple products won't talk to each other although I am close to getting that working. Thankfully there is a weekend approaching.
"That's why I use Perl" ;-)
Seriously though, I've been hacking a bunch of C lately, doing stuff I've never done before (dumping structs to disk and restoring from disk back to the same structs) and I was amazed when after spending a week grokking what I needed to do, my first implementation pretty much just worked. There's an amazing buzz that comes from that. If only I could apply it to my personal life :-D
I am not a programmer, but I know what you mean... The joy of getting your layouts, the design, the flow, and finally the content right, and that too, the first time you lay your hands on it. There's nothing that beats it.
Often I have wondered what causes this exhilaration. Yes, getting it right the first time plays a major role. But, when you think of HOW you got it right the first time, you get only one answer - 'the Zone'
When you are in the Zone, with nobody hovering around you or no interruptions (eMails, IMs, chats, meetings, etc.) you tend to give 200%.Unfortunately, the Zone happens only for two hours in an average working day.
As for the results, I call it the "Aah!!' effect... What about you?
PS: Do I hear the Project Managers baying for blood?
That's why I use Mac!
I derive all (ok, lots of) pleasure from rerunning some piece of code and being greeted with this scenario:
Not only did I fix the bug I was squashing, but the one after that is history too! Suddenly all is right when just moments ago the PHP interpreter was yelling constantly.
This elation is rare for me, mostly because I rarely get that first bug squashed, so I never have the opportunity for a second to be fixed by chance.
I bet at least the first couple of times you ran the Perl program, you had at least one missing semi-colon or curly braces?!? ;-)
Yea, it's a good feeling when it not only Just Works, but you are confident that it is functionally complete, all corner cases are handled, etc.
Nope. I use Emacs and c-perl mode. :-)
Missing curly brackets? Missing semicolons? Never. Not with all the fancy colors vi makes when something is missing. Ok, so the semicolon isn't picked up, but quotes, ticks and parenthesis errors can be seen, and indentation does wonders for the curly brackets.
Now, if only our inventory management system would allow us to do some things that made sense. Why would an order totalling $0 (payment applied as an item since I can't import a payment - limitations stink) be held up because of credit limit issues? Grrr... if only I could get at that source code.
You mean you guys don't use something like NEdit.
I guess my initial roots of Visual Studio are showing through :).
I agree wholeheartedly.
Having a service work exactly as the documentation states is such a huge savings in headache, etc.
When that happens, you just chalk it up to the boss as you are extremely adept at solving the problems then. :)
I usually strive for things 'just working' at least 90% of the time (Y.M.M.V.). If it falls below that, it usually indicates a failure of architecture or lack of satisfactory knowledge of the environment. A recent flurry of bugs in my case turned out to have roots in an architectural issue. If one is fixing the same type of issue over and over, usually it indicates something *else* which needs fixing.
The joy is usually short-lived unless someone gives you kudos for doing it. Most folks on the customer side of our profession just assume that everything should work, and only say something when it doesn't. It's rare to get kudos.
The only other way to avoid the short time span of accomplishment is to keep doing it.