Not sure which is better: designing complex systems on the whiteboard or coding and debugging the implementation on my computer?
I honestly think that I like the software architecture aspect of my job more than the actual coding. Nothing beats those glorious "AHA!" moments. Sometimes they take hours, sometimes days, and sometimes even weeks to figure out. I just had one hit me that has taken me almost 2 years to figure out!!? It's not like I was trying to figure it out for 2 years and couldn't, but more like I have been blind to it and didn't give it much attention. I'd been working around my own nasty design for 2 years and I finally sat down and figured it out tonight.
This system I'm building has been extended so much over the last 2 years, and I'd complicated a particular piece of our product so much that every change I was making was adding to the headache. We are constantly adding new functionality to our product, and it's usually done is such a manner that it needs to be done sooner than later. The core foundation of our solution has been refactored a few times in the last year or so and it is very solid. I have squeezed in a week or two here and there to ensure that it is able to scale as needed. However, as things got further from the core, they seemed to get more convoluted and I was breaking out into multiple branches of (very) similar logic. Tonight I was able to doodle up the entire system on my whiteboard with letters, circles, arrows, rectangles, reds, blacks, and blues. Then once I had it all visually mapped out, I did a few swipes and connecting of objects with my dry-erase markers and was figured out!
Who am I kidding though? Tomorrow, I get to sit down and apply the code to make it happen and that's pretty damn fun too. It's always nice to see your ideas go from a concept to an actual working system. Especially when that working system is a more efficiently designed working system.
I love my job.