In 2000 when I had just started my master’s degree I had already been programming in C/C++ and VB for some years prior, mostly simple LoB apps for my dad’s business and some other telecom programs that I had written while working as an intern during my undergrad years studying mathematics. I thought of myself as being above the rest of the class in terms of programming skills and knowledge of how software worked and was written. Funnily enough I even thought of myself as being better than my professors, who I thought were just stuck in academia and didn’t know how real programming was done. Now 10 years later after being a professional programmer for 8 years I feel disappointed by my attitude towards my professors and regret not having made better use of my time doing academic work rather than focusing on more practical programming tasks.
Here are some of the incidents that I recollect,
Freshman year, my professor for "Programming Languages" was teaching about how different languages implement, static vs dynamic, lexical scoping, setup of call frames, how call frames are linked to the global environment etc. At this point the only language I knew well was VB and was comfortable coding in C++ and Java. Based on my miniscule knowledge of these imperative languages I started questioning all that she was teaching in a very negative tone, my prof did answer all my questions correctly but since I didn’t know anything beyond what I knew I couldn’t believe she was teaching all this bullshit to us. I don’t quite remember what I was arguing about (closures maybe?) but since the rest of my class were even more clueless than me they thought I was cool to stand up to the prof and question her the way I did. Now after all these years and having read and used a much larger set of languages I feel stupid for thinking that my prof didn’t know what she was saying. FAIL!
Freshman year, my professor for data structures and algorithms was teaching us some introductory C, he showed us the canonical C expression for copying strings *dest++ = *src++; When I saw this on the board, I started shaking my head and telling my classmates that the prof was teaching incorrect code. So right after the class I went up to him and told him that I felt that the code he had written was wrong and that it would not work, he looked at me, smiled and said "You’ve just seen this today, take some time to absorb it and let me know if you still think it is wrong". I thought he was just avoiding me and never really bothered to look it up. Years later when I first read K&R C (One of the best books on C IMO) I was enlightened. How arrogant of me to think that this professor from Stanford University didn’t know how to write C code, I suck.
Another incident with the same professor that I remember is when we were asked to write a solution for the 8 queens problem, rather than focus on writing a good algorithm I wanted to showcase my programming skills and wrote a program that given any set of chess-pieces would tell you if there was a way to place them on the board so that they didn’t threaten each other, the code was probably 10 times longer than a solution to the simple 8-queens problem and when I saw the solution that my prof. presented using arrays and 3-4 lines of backtracking code, I thought that my code was definitely better. Now that I look back, I realize that the focus was more on the algorithm and that the efficiencies achieved by the code written by my prof would have blown my code out of the water. This prof had taught at Stanford University, If I had the chance to go back, I’d definitely get on his good side and maybe get a recommendation to study at Stanford. What a wasted opportunity!
Sophomore year I had a course in Artificial Intelligence, for some reason I don’t think I ever attended enough classes for that course and did any of the coursework, if only I had known that doing anything with AI the rest of my professional life would be a pipe dream, I’d have soaked up AI and actually written some AI programs that year, maybe learnt LISP/Scheme, read Paradigms of Artificial Intelligence, learnt statistical methods for expert systems, instead of goofing around and trying to study the night before just to pass the exam.
Another professor in sophomore year was a visiting professor who a retired army man, he wanted to teach us this new language called Python. He said that he’s used a lot of languages and Python was going to rule them all, another thing he wanted us to learn was SIP because he thought that SIP was the future. Silly me and my naive belief in C++ being the greatest language ever, I used to hang out at codeproject.com a lot back then and I posted something about how idiotic this professor was trying to teach us a "typeless" bastard language…ROTFL…how much more arrogant could I get…looking back now at the widespread use of Python and SIP I only wish I had stayed in touch with the professor and made better contacts with him and actually gotten into Python and SIP way back then. I’d actually have some pretty cool stuff on my resume instead of the usual run of the mill app programming experience.
In my senior year, we were supposed to submit a thesis. Most of the other professors allowed you to do an internship at a software company and use the work there as your thesis instead of actually doing research and submitting a thesis. I just assumed that my professor would be the same and spent the whole semester working at an outside software company, when I met my professor for the first time was on the day we were supposed to submit the thesis. He was shocked that I wanted him to sign on something he was seeing for the first time. So he had me come back the next day, looked at what I had done and tried to morph that into a thesis on text mining. He had me read up papers, look up research journals online and basically write a proper thesis instead of a project report which I had submitted earlier. During my interactions with this professor I realized how academically good he was in terms of his connections with other professors around the world, the papers that he had published and the research that he was doing at the university. Looking back now, I wish so much that I had gone to him right when the year started and spent the year actually doing research and writing a thesis instead of writing software.
I know hindsight is 20/20 but it just seems like I could have made a lot better use of my time during those years instead of spending my professional years wanting time to do the same.