Things I wish I knew in College
Meta
About a month ago, I asked the following question to the NIT Calicut CSE student body:
If you could ask only one question to an NITC CSE alumnus with diverse experience in industry, higher studies, and research, what would you?
The most raised concerns were:
- How to decide between higher studies and industry as your next career move?
- What are the limitations of an NITC CSE education and how to succeed in the field despite them?
- If I am happy with my life with a degree in computer science?
Observations:
The majority of questions (>50%) related to the above three.
The following two stood out as particularly thoughtful questions:
The limit of the heights you can reach. For someone aspiring to reach the top, say the CEO of Google or so, would a degree from NITC be a bit of a let down (it is not an IIT, hence no similar levels of exposure and opportunity, which cumulates up. You don’t get a good research internship / good recommendation => no good university for MS => not a nice position for a job to start with, etc)?
and
What are the benefits of Open Source contribution experience in Industry? I know that competitive programming helps one in making data structures and algorithms concepts stronger, but open source development also teaches one how to read and maintain large code bases, which is an important skill in the industry. Then why, in the placement procedure and many other activities, is competitive programming given much more importance over Open Source contribution?
There was just one question about the age old debate on the importance of GPA.
I was happy to see that NITC has not lost its sense of humor as one of the questions was: “Will you marry me?”
I am not an authority on any of these questions (perhaps except the last one (-:) and am still trying to figure out answers to most of these myself. I decided a more useful approach would be to compare my present self as a graduate student at Brown University and my past self from college.
I share my experience in the context of the questions raised. The aim is to leave the readers with some pointers that might be valuable in a wide range of career paths.
Things I wish I knew in College
How to Learn
I spent two years in industry before going for a master’s degree. After being away from a traditional educational institution, it took me a whole semester to figure out how to learn effectively. How come my usual learning process, reliable enough to pass any exam in college, was not working anymore? If I knew about the science of learning back in college, I would not have taken any pride in not taking effective notes in classes or studying only a night before an exam. Neither would I have shied away from studying in groups and learning by teaching.
Time Management and Prioritization
Time is money and those who master it manage to climb the ladders of success. I learned how students here at Brown keep track of the time they spend on classes and assignments and take decisions scientifically based on their priorities and schedule. In college, I had figured out how to juggle my life around my various roles (student, with CSEA, remote internship, lab administration, projects, TEDx, competitions), especially thanks to Randy Pausch’s advice. But I failed to do enough justice to some of them while being a perfectionist at others. I wish I then knew the meaning of “doing things right vs. doing the right things.”
Importance of Reading
If I were to list out each successful (for some criteria of success) person I have ever met, I doubt I will find any who said they were not a voracious reader. Be it books (fiction, non-fiction, other various genres) or technical literature (textbooks, research papers, source code, technical blogs, etc), reading always stands out as a common factor in the people I come to admire. It took me first two years of college to realize I was not reading enough, which led me to take up yearly reading challenges. It took me another four years to be comfortable reading technical literature. I wish I had taken more time in college to learn and practice how to read effectively.
Importance of Writing
Another common factor I find in most successful people is being able to communicate ideas effectively both in written and spoken form (it can be argued that former has more impact and lasting value for a CS professional). I practiced writing consistently over my four years of college – either on my blog, lengthy email debates on FOSSCell mailing list, or those memos I wrote for my CSEA team. Having a public blog led to interesting discussions, opportunities, and credibility boost. But, I wish I then knew the benefits of writing a private journal to introspect my day and plan ahead the next. It also helps to reflect back both on a short and long-term basis to figure out what one wants to do with their life.
Coding in a High-Level Language
Though I knew some Python in college, I did not get to exercise it much during my time there. This was primarily because most of the curriculum is based on C and I did not work on many hobby projects. Department faculty take the stance that teaching programming concepts in C helps students learn how things work at a lower level. Yet, I came to observe that this inhibited my ability to think at a higher abstraction level. I wish I had spent more time learning either modern C++, Java, (advanced) Python or a functional programming language like Haskell. Knowing just C can severely limit one’s ability to solve problems and perform well in job interviews.
How to Think
One of the primary goals of a college education is to teach one how to think for themselves. This not only involves using independent thought to work on projects and assignments but also learning to honestly accept your ignorance and ask questions. It was easy in college to get involved in groupthink or forget that my only real competition was with my past self. I wish I had taken full responsibility for my own education and not depended too much on the limitations of my alma mater.
One thing common to all the above skills and meta-skills is that they take consistent practice and effort to develop (I am still continuously learning them). A college environment provides a good combination of personal freedom, enough free time, necessary infrastructure, and a conducive learning ecosystem (with classes, teachers, and peers) that, in my opinion, it is just the right time to develop these skills. I wish I knew this back then.
I have deliberately left the questions raised in the survey unanswered in this article. But I will be happy to respond to original askers and to specific follow-up questions over email.
Thanks to my friends Marilyn George, Jaseem Abid, Lauren Bange, and Pranav Ashok for reading drafts of this article and providing valuable feedback.