I remembered yesterday why I want to be a computer scientist.
It seems bad to me that I, known for (among other things) my intense focus and determination, lost my way for two years. I didn’t do a bit of real programming, no design, no new languages, nothing other than idly tweaking others’ programs to make them work on my system or on my website.
After the hair-raising C++ project of junior year, I wanted nothing to do with conventional programming. Never would I sit and peck at a keyboard eight hours a day hacking on some big system, trying to implement new features or fix old ones.
Who was I kidding?
Having spent the past two weeks utterly immersed in Java and object-oriented programming, working, literally, forty or more hours a week just on this application, I can say I’ve refocused on my old goal.
This is what I love. I love thinking in for and while loops like others think in Spanish or French or music. I love tweaking search algorithms or data structures to shave that extra second or two off of program execution time. I love that big “Fucking A!” when one little problem that’s been stumping me for more than a handful of hours becomes suddenly illuminated and crystal clear for me to unravel.
I still don’t know what I want for a career. Maybe I’ll move to India to be a programmer. I might also take a serious interest in design and become a software architect (or whatever they’re calling it these days) like the Old Man. But I do know that it has been unbelievably easy for me to spend ten or eleven or twelve hours a day working on this project, learning the language as I go, tweaking and improving on the original algorithms, and learning how to best implement the design in a manner that will make the program easily maintainable.
I have a Java app, with a full graphical user interface, that runs no slower than its command-line C++ equivalent that I started with. It is well-designed (the Old Man aided very heavily in the design) and should be fairly easy for a non-chemist to maintain. It is easily expandable to include other features, including other types of analyses to run or different statistics to report.
A professional could have done it better (there are undoubtedly flaws in my documentation style/level and in my impelementation of the design), and certainly done it faster, but it has been an unbelievable learning experience for me.
I feel like I’m back in the hot seat, not only thinking of improvements and additions to this current program, but thinking of other things I want to write and other problems I want to solve for myself using the tools at my disposal.