I’ve been sitting on the material for a book geared towards high school and college students about how to get ahead in software engineering early on their career. I think I’m going to post the ideas from there, starting with the fundamental processes of success in software engineering.
Mind you, the information below is specifically geared towards college students, but the spirit of the principles can be applied to anyone who wants to succeed in software.
The principles you have to live by to go from zero to success in software are actually few in number, albeit massive in time and energy commitment.
- Learn outside of the classroom.
- Get your name out there.
- Get work experience as early as possible.
- Always practice your soft skills.
Learn outside of the classroom
Never, ever rely on school to teach you everything you need to know. The information you will be learning in your CS education will likely be outdated and/or only tangentially related to what you need to know at best, and completely irrelevant and wasteful of your time and energy at worst. Mind you, if you are an international student, your GPA is more important to your career well-being than it is for a domestic student. Regardless, study different technologies and frameworks at home. Get together with others to work on projects in your spare time. Attend workshops and discussions. If all you can do is try and squeeze in going through some tutorials between classes, do that. It’s better than nothing! But for the love of all that is holy, whatever you do, learn outside of class.
Get your name out there
This means letting as many people in your field know who you are and what you can do. An excellent way to begin is to attend tech-centered school clubs. Chances are you’ll meet people that are much smarter and more talented than you, which is perfect because you can learn from them. You can also
- attend hackathons, especially in different parts of the country if you are able to figure out travel logistics
- attend local networking events and talk to developers in your city
- give talks, presentations, or workshops for a technology or framework you have learned
Get work experience as early as possible
Believe it or not, there are companies out there willing to hire summer interns who have only completed their freshman year of college. In fact, several of my friends have had internships even before they started college. My experience is entirely within the Midwest, but I can name several companies off the top of my head who will hire freshmen as interns. Again, if you are an international student, this is harder to do, unless you already are authorized to work in the US. You would be best off looking initially for student programming/IT positions within your university. Even if it’s not a programming position and they just have you doing help desk kinda things, take any tech-related school jobs you can get your hands on to begin with, because that will be valuable experience you can put on your resume to make you more noticeable to companies that are willing to sponsor an H1-B or other visa for you. Even if you’re a domestic student, I still recommend grabbing onto tech-related jobs you can as early as possible.
If you’re not a freshman or an international student, your chances of finding work are even better. The thing is, a lot of companies are reluctant to hire freshmen or even sophomores because the biggest reason most companies even bother with interns is to try and bring in good, talented students as full-time employees. But also, some companies like the cheap labor that comes with interns, so those companies will give you a place to start.
Always practice your soft skills
Over the years, people have alerted me to job openings, extended me interviews, and hired me, simply because they liked me. My last several interviews have either not had coding questions, or had very simple questions, and I aced most of those recent interviews. With little on-the-spot demonstration of my skillset, I have been able to convince interviewers that I can positively affect their bottom line. Companies that ask you to write code on a whiteboard are likely less concerned about your people skills and your ability to communicate clearly than those that don’t, but again, if you can’t articulate yourself or if you come off as abrasive, you’ll have a much tougher time landing jobs.
If I never connected with the people who are now the most important people in my professional network, I would have a vastly different, and probably much weaker, set of work experiences. My friends (by friends, I mean professional connections, but they’re my friends as well) in Indianapolis, the city I spent the last two summers in, the city I have now permanently moved to, and the city I now think of as home more than Columbus, Ohio where I lived for over five years, would not have gone the extra mile to help put me in touch with companies if they didn’t like me. But they help me, because I love these individuals and their organization, because I’ve proven myself to be a competent software engineer with glowing reviews from my host companies, and because I’ve fully integrated into their community.
Mind you, knowing someone will most times only get you a foot in the door. If you’re relying solely on your connections to help you land a job, and you don’t have the skills to back up the good word about you, you’ll find yourself just as unemployable as your classmate who does nothing for their career besides showing up to class. Shortly after I started my first job, an old coworker of mine popped up on the radar of the company I work for. They were looking for a front-end engineer. I tried my best to tell them how awesome she was and what she’d done for our previous employers, but her resume was admittedly impressively unimpressive. She had a high GPA and extensive work experience, but she’d only worked with C# (the company is a Ruby on Rails shop), and she didn’t even have a website.