Skip to main content

Advice I would give myself If I were in College

· 12 min read

Computer science is the most sought for specialization in Engineering colleges, at least that's what I've heard. When I entered my first year of college, I barely knew that Computer science means theoretical study of computers. Even though we had the best of the syllabus, I could hardly relate the theoretical knowledge with the practical world. Despite of having practical hands-on sessions on almost every subject which I think constituted 20% to 30% of the time we spent in the entire course, I found it difficult to understand the concepts. This was around 12 years back.

Assuming that the current curriculum consists of theoretical knowledge, how can one outperform in college? After having a decade of experience, I try to explore and answer the question, "what advice would I give myself if I were back in college?"

So what is it that changes now?

Resources. Period. We have easy access to Smartphones and every house has a good configuration laptop. However, the most decisive factor is availability of super high speed internet. Around a decade ago, personal computers were a dream and internet was costly. Did you know? We used dial-up connection.

Advice I would give myself If I were in college?

This essay is a retrospection to my Academic and Professional journey so far. I am still a student, learning everyday and trying to keep up with latest technologies. Considering that we have easily available resources, I want to write them here not just for me, but for anyone who reads this post.

1. Enjoy your college life

Enjoy every second of your college, make new friends and learn everyday. Most important, make mistakes and learn from them. Improve. While in college, you are not liable to anyone but you. Be Responsible. College is where you can shape your career. Make memories. P.S Most important, take photos, make videos. Have Fun.

Enjoy College

2. Read

Read, technical books, fiction, dramas etc. At-least half-hour daily. How will that help?

  • With consistent reading, you will improve your vocabulary.
  • You will learn to speed-read, and in turn, you will understand and remember what you read for a longer period of time.
  • Reading wide range of topics will give you perspective. You will question things and sought answer to them.
  • Reading will boost your creativity.

Reading

3. Participate and Contribute

In this era of social media, instead of ~wasting~ utilizing your time in social media like Facebook, Instagram, participate in communities like stack overflow.

a. StackOverflow:

Stack overflow is a reputed and highly visited (top 140 websites) community of developers who help each other to solve technical problems. You can build a good reputation on Stack overflow which will boost your career. StackOverflow has gamified their software, one gets rewarded for asking questions and most importantly answering to other people's posts. You get rewarded for correcting questions/answers too. With consistency, over the course of time, your profile will be evident to companies seeking for technically strong candidates.

b. Open source:

Contribute to open source projects on GitHub. Create your profile on GitHub and publish your own projects or fork interesting projects and contribute to them. Do not hesitate to publish your source code online. As long as you are disciplined and consistent, pushing your code on GitHub will give you good exposure. But what will you push to GitHub? You can

  • Solve Hacker Rank/LeetCode challenges and publish your solution in GitHub
  • Work on simple projects like a Calculator, Birthday Reminder, Invoice generation, Web scrapper etc. Create such projects in different technologies like python, c++, JavaScript etc.
c. MOOC (Massive open online course):

MOOC are the next big thing. With plethora of online courses and with amazing instructors, try and complete as many interesting courses as possible. There are many websites like Coursera, EdX, Udemy etc. that provide good courses. The most important and the best part in participating and completing them is that you will get certificate. This will boost your profile. If you complete your course, you receive badges which you can publish on LinkedIn, your personal blog or any social media.

d. FreeCodeCamp

FreeCodeCamp is yet another MOOC, however it has thousands of exercise on front-end development. I found it real helpful to master technologies such as HTML, CSS and JavaScript. There are various inspirational stories on internet about how FreeCodeCamp helped someone get a good job. Having used it extensively, I can vouch for this platform. Not to forget, the certificate is completely free.

4. Build a Brand

Create and Publish. Be Visible. Build a Brand. College is when you can invest your time in creative things. A brand is an identity through which everyone recognizes you. As a software engineer, what can you do?

Build a Brand

a. Create your personal webpage.

Did you know, you can create and host a webpage completely for free? There are many hosting services, but I would insist upon GitHub. With GitHub pages, you can create and host a static webpage. Apart from GitHub being completely free, another advantage is that if you consistently push your code to GitHub, it shows how passionate you are about open source, code commits, technology etc. All your projects and open source activities will be discoverable via GitHub.

b. Write. Blog.

Just as Reading is important, so is Writing.

What to write? Where to write?

  • Blog : Maintaining an online log (blog) is beneficial. Writing helps you pen down your thoughts in a clear and concise manner. This means that you will be able to communicate better. In your job, you will be constantly writing emails, attending scrum meetings and writing requirement documents. Your habit of writing blog will help you better communicate your thoughts to the readers/managers/colleagues.

  • Where to Blog? : You can use blogger, WordPress etc blogging services, but I would insists on using Jekyll instead. I have an article on this blog about [why I choose to use Jekyll]({% post_url 2019-02-18-Why-Jekyll %}) as my blogging software. As long as you write consistently, it does not matter what blogging platform you are using.

  • What to Blog? : Blog your thoughts. Everything. I was inspired by the movie "The Social Network", when Mark Z. blogs about how he wishes to divert his mind and that he needs an idea. Remember? P.S : I am not promoting that you write about your girlfriend, but you get the gist.

Writing

Let's say you learn about some cool technology, you can write about what you learned from it. You can write about movie reviews or an idea that you want to pursue. Again, Blog your thoughts. My advice of writing everything under the sky is debatable.

Some industry experts would say that, it is always better to write about topics that interest you and stick to the niche. You can then build an audience around your topic of expertise. For eg, if you write about fashion, do not write movie reviews. If you talk about technology, do not write about cooking. Yes, it is wise to stick to a niche topic, but hear me out. You are a student in college which means you would be just starting to explore blogging. Thus, being a beginner, you will want to learn about, what blogging is? How to promote yourself? What are analytics? What is SEO? etc. The answer to all these questions you will learn on the go. Consistency is the key.

  • "Ok ok, I am sold. Anything else?" : Hell yes! I missed the most important point. Besides improving your communication, vocabulary, creating an internet presence and overall growing intellectually, blogging will help you improve your typing speed. I am a huge advocate of using the keyboard without looking at it. Advantages? First of all, you will type faster, much accurate. Second, you will save a lot of time, you just need to look at the screen when you type. If you spent time looking at the keyboard searching for the right keys, you will then spend time on the screen to find typo. Twice the time utilised.

I have to quote Steve Yegge on the use of keyboard here. He summarises the importance of using keyboard bull's eye.

"I can't understand why professional programmers out there allow themselves to have a career without teaching themselves to type. It doesn't make any sense. It's like being, I dunno, an actor without knowing how to put your clothes on. It's showing up to the game unprepared. It's coming to a meeting without your slides. Going to class without your homework. Swimming in the Olympics wearing a pair of Eddie Bauer Adventurer Shorts." {: .bg-light .blockquote .text-right .p-4}

There are many games, that improve your typing skills. I encourage that you play once in a while those games.

P.S : Look at your keyboard and touch the "F" and "J" keys. Do you feel anything different when comparing to any other keys on the keyboard? Go figure.

5. Networking

College is the best time to get involved. These days, there are many meetup's held to help students learn various technologies. Attend such meetups. Not only you will learn about the latest and the greatest but you will also learn about individuals. Try to follow the "SME's (Subject Matter Expert's) on social media or look at their open source repositories. Usually, these SME's are professionals with many years of hands-on experience.

During meetups, share ideas, listen to the advocates, build a professional network. LinkedIn is the best web application that you can develop your professional network online. Make use of it extensively.

6. Side Projects/ Hobby Projects

Hobby Projects

I cannot stress more on the importance of Side Projects. Side projects are usually something that you do out of hobby apart from your daily routine. Being into the field of technology, a hobby project would be like implementing an automated feed reader or creating a mobile application that notifies you about a quote daily in the morning. Sky is the limit. Usually a side project is to bring into life an idea that you think will be useful to you. Sometimes, you find certain technology interesting which you want to explore. The best way to learn it would be to work on a project. Reading through tutorials and articles would just give your theoretical knowledge, but actual implementation and getting your hands dirty would teach you the technology.

When working on hobby projects, ensure that you have a demo of your work hosted somewhere online. When someone visits your profile, it is always good to show a MVP (Minimal Viable Product) of your project.

"I know Flutter" v/s "I've made X using Flutter". Which statement do you think makes more impact?

  • GitHub : To host your code samples, build a static web page etc. Git is the most widely used version control system. Just as how important learning a programming language is, so is important to be familiar with Git.

  • StackOverflow : is the largest, most trusted online community for anyone that codes to learn, share their knowledge, and build their careers.

  • You should write Blogs : A good article which inspired me to write my blog. This was published in the year 2005, but it is relevant till date.

  • Write Code Everyday : Since the beginning of my career, I was highly inspired by JQuery Javascript Library and read a lot about its creator, John Resig. One of the blog post, "Write Code Everyday" by John Resig keeps me motivated. I have tried several times and having failed at it miserably, somewhere down I know that this is a good practice I need to force myself to keep up. I would urge that you read the article and inculcate it in your routine.

  • HackerNews : Hacker News is user submitted high quality technical articles for exchanging news and sharing views. The articles shared are of high quality, so are the comments. Unlike any social media, hacker news is clean, clutter free and has top rated and upvoted articles.

  • Paul Graham Essays : When I discovered Hacker News, I learned about YCombinator and Paul Graham. I learned about how the best of the best technology companies and their products are backed by YCombinator. I wanted to learn more and then I discovered inspiring essays by Paul Graham. One of them was Hackers and Painters. Paul Graham's insights into StartUp world and his advice out of his experience are amazing to read and learn from.

  • CodingHorror : Jeff AtWood's blog posts are insightful. Being a huge fan of StackOverflow, I had to learn about Jeff AtWood and Joel Spolsky who founded StackOverflow.

  • We are Typist first, Programmers Second and Programming's Dirtiest Little Secret : These are gems worth reading.

  • 12 Steps to Better Code : This article by Joel Spolsky has been quoted on various websites. It is worth bookmarking.


Disciplin is the Key

If you look at the right resources and follow the right technology enthusiasts, you will learn a lot. Internet being so vast, it is common to get distracted and drifted. The click-baits and the recommendation engine to be blamed here. I use YouTube to learn various things and many times I get distracted by the recommendation engine and click on another video without completing the one I started on the first place.

Thus the most important advice I would give myself is to be disciplined. If you pick a task, finish it in one seating. Don't get distracted or diverted and do not procrastinate. Make a ToDo list and keep a track on hourly basis. Maintain a daily log of what you achieved and what went wrong throughout the day. Keep a positive attitude and always acknowledge your own actions.