How to be a Successful Computing Student?
Written on September 4th, 2021 by NaserBeing a student is among the best experiences in modern life. Being able to dedicate a few years of our lives for learning is a rare and recent privilege in the journey of human evolution. How to make the best use of this learning time is the topic of my post today.
There are many factors that make computer science unique and different from other fields of study. With the huge opportunities made available to computer science professionals comes a set of challenges to students and newcomers. I will address the “uniqueness” of computer science in another post, but to summarize, many of the educational concepts that work in other fields do not work for computer science. The skills and information presented in lectures and course work are only a part of what is needed to have a successful career as a computer scientist. A set of complementary skills and experiences are needed to stand out in today’s competitive hiring process in tech. Stopping myself from going on a passionate rant on the hiring process in tech (which I will leave for another post), I will share my list of suggestions on how to become a successful computer scientist:
1. Start with strong coding foundations
Make sure you know the foundations of problem solving and coding in a couple of programming languages. Whether you have taken a data structures course or not, I encourage you to learn data structures and algorithms thoroughly. You don’t have to be amazing in many programming languages, but you should be able to implement basic data structures without consulting external resources. Equally important, you should know when to use each data structure and the time complexity of basic operations. In my post on “5 of my favorite computer science books” I include an excellent book for learning data structures with C++.
2. Pick an IDE and learn as much as you can about it
Pick an Integrated Development Environment (IDE) and learn as much as you can about its use and features. VS Code is a popular choice at the moment, Eclipse is another choice for Java. Either way, learning how to use and navigate an IDE will help you build complex software systems quickly and easily.
3. Become a TA
If you are at a department similar to the CS department at Colby, I recommend becoming a Teaching Assistant (TA) as soon as you can. This will help you develop communication skills, code comprehension, debugging, and programming abilities. Also, it is a great addition to your resume.
4. Start doing Leet Code questions in your first year
Leet Code is a style of algorithmic problem-solving question that is typical in software interviews. Despite my many comments on Leet code and similar platforms, I think it is a good place for students to learn and better their programming skills. Don’t leave this until you start looking for a job, start early and make it a regular part of your life. If you solve one problem per week, you will finish 208 problems by the time you graduate!
5. Learn and use professional software development tools
I might say “take a software engineering course” but that would seem like self-advertisement, and therefore I refrain from doing it. In fact you can learn many professional software development tools on your own. Learn about clean code, Git/GitHub, code documentation, refactoring, etc.
6. Make and break things
Build things and make projects outside of courses. Whether you create a game, a website, a robot, or any piece of software, you will gain valuable skills that will prepare you for your future role. In addition, side projects show skill and passion to future employers, and you never know, you might create the next Facebook! (In which case I must insist on a huge financial reward, since my list is the true trigger for your creation 😛)
7. Go to hackathons and tech events
Signup to a mailing list for tech events and try to go to a couple of hackathons each semester. Dedicate your hackathon time to learning something new, and whether you win an award or not you will be a winner ultimately. In addition, hackathons are great for meeting motivated people who are on a trajectory for success. Surrounding yourself with positive people who spend time learning and creating is the best way to stay motivated. I truly believe that “you are the average of the five people you spend most of your time with.”
8. Find mentors and build your advisory network
Don’t hesitate to reach out to professors and successful people to ask for advice. People like to give advice and sometimes people help beyond just sharing an opinion. Reach out to experienced professors and industry professionals when you have a question or an important decision to make. Professional communication is your biggest advocate in that, so learn how to write a professional email and show gratitude when people help.
9. Contribute to open-source projects
Whenever I interview someone, I always consider two aspects: skill and personality. You need both to succeed, and personality is more difficult to judge. When it comes to skill, I like to see software or projects written by the candidate. Seeing something like a contribution to an open source project immediately indicates that this person has the technical and communication skills needed to build software. Be patient, and pick a project that you like, and learn how to write a significant contribution to it. This experience teaches you things beyond what you can learn in a classroom, and it helps you stand out.
10. Apply for jobs and internships
The interview process is educating in itself. I would encourage students to apply for internships to medium sized companies after they take a data structures course. This will help you understand the interview process and recognize what you like and dislike in the industry. In turn this will help you make better career choices after you graduate.
11. Get involved in research
If you are in an institution like Colby, I would recommend getting involved in research in one shape or form. This will help you gain important systematic thinking skills that are vital in academia and the industry. Also, if you like the research experience, you might consider going in the direction of graduate school after you graduate. The only way to know if you will be successful in research is to do research.
12. Figure out the skills needed in the market today
Take a look at the job market online today. You can find many useful information about the skills needed in the job market today. You can make a list of the skills needed for your dream job, and you can start learning these skills as early as your first year in college.
13. Find a passion project
To borrow the words of Vincent Van Gogh: Love many things, for therein lies the true strength, and whosoever loves much performs much, and can accomplish much, and what is done in love is done well.
To put it in less elegant words, when you are passionate about something, you don’t get tired, and you don’t need a break. The task becomes the break, and everything else becomes a distraction. Finding a computing passion will help you maintain your momentum for learning and expanding your knowledge.
14. Create a portfolio of projects to show to future employers
Maybe this is a natural outcome of several previous points on this list. Having a few well-made projects that were developed using professional software development tools is a great way to stand out to future employers. Recently, I interviewed a candidate who had an excellent simple game on their GitHub account among other well-made projects. From all the people I interviewed that week I still remember the game and the clean code that screams “I am a good programmer.”
Make sure you have a few projects to show future employers. This will be the evidence needed to prove that you can code well, especially if some of your projects match the style of the hiring company.
15. Learn teamwork skills
Software today is developed in teams. The best way to gain teamwork skills is to work in teams, good and bad experiences help you gain collaborative and conflict resolution skills that will help in the future. I made a post on teamwork in the classroom, take a look at it for more details.
16. Make the world better
Within the life-long struggle to discover yourself and what you want to become, don’t forget to live with kindness to yourself and others. Make or break technology, but always be sure that you are making the world a better place for all living and thinking things (whether biological or semiconductor based).