One of my jobs at Groupon was to help the company recruit some excellent developers, so I could be considered a spokesperson for the Groupon development team, mainly responsible for posting recruitment information and answering questions. Last week, I replied to two college students who came to inquire about summer internship positions.

I carefully reviewed the content of my email replies and summarized 8 pieces of advice that I think are valuable, for college students who dream of becoming programmers:

  • 1. If you start reaching out to companies outside during your sophomore year, your approach is commendable. Many college students wait until two months before graduation (or even later) to consider job hunting. Even if you cannot get an internship opportunity, you should still often go to interviews and interact with some companies, striving to leave a good impression on others.

  • 2. If you are interested in a mature technology, you can first learn the relevant basic knowledge from books. Pay attention to combining theoretical knowledge with practical exercises. The knowledge in books has been carefully edited and will teach you a complete set of systematic learning points. But you can't just read books; you need to do the exercises in them. For example, if you want to learn Rails, you can read "Agile Web Development with Rails", which will teach you how to develop a complete e-commerce website in a week. Sometimes practice often comes before understanding (or more precisely, without practice you cannot understand).

  • 3. On this point, I want to say: don't just sit and wait for the classroom to teach you new programming languages or cutting-edge technologies. The goal of the computer courses offered in school is to let you learn the theoretical foundation of programming as well as some rules and special topics. But many technologies (such as code management, server management, nginx configuration, etc.) and programming languages (school courses only teach C and Java) will not be covered in the school curriculum. But in a company, you will often learn new technologies in a targeted manner based on your career planning and business needs. So, if you want to gain something in your career in the future, try to learn some new knowledge beyond the curriculum now.

  • 4. Don't just focus on some specific programming languages and frameworks; diversify your technical skills. Books like "Structure and Interpretation of Computer Programs" (free online reading http://mitpress.mit.edu/sicp/full-text/book/book.html), "Clean Code", and "The Pragmatic Programmer" are all good.

  • 5. If you just glanced over the above point, you'd better read it again! Read SICP, watch the video explanations. These trainings will make you an excellent programmer.

  • 6. At least learn one obscure programming language. It will let you learn many things that you can't learn from mainstream languages like Java. I personally prefer the Lisp language. The book "Land of Lisp" is great, providing you with a fun way to learn Lisp.

  • 7. Find a project to work on. You don't need to do something very meaningful or important; as long as it allows you to practice. Write a small program that can search for the Starbucks nearest to you, develop a unified management website system for your study group, develop an automatic robot software that can complete jigsaw puzzle tasks. Simply for practical learning, and publish the project online, put the source code on GitHub, and also often write some of your own learning insights and put them on a blog. In this way, the projects you do will be made public. The benefit is that in the future, employers will have a good impression of you, especially during interviews. At the same time, this also gives you the opportunity to exercise your writing ability, allowing you to know where your progress is each year.

  • 8. Get in touch with more developers related to your own field. Thanks to Google, if there are relevant conferences and activities in your field, you can search for them in 5 seconds. If you can't find any conferences, it means it's too time-consuming or too difficult to organize. You can also volunteer to contribute to these conferences, such as finding meeting venues. Doing these things is not very difficult; the key is to spend time and have confidence. These things will earn you a good reputation, keep in touch with others, work together, and progress together.

  • Finally, I want to say: spend $100 a year on books and practice diligently. You will definitely become a college student who is more excellent than anyone else in the eyes of employers.