If (as in, if I decide to go to college, not if I get in) and when I move on to college, I intend to major in computer engineering or computer science. I have been refining my programming skills for many years, however, and rather than focus on what I would learn in college, I have begun to focus on what employers might want me to know.
I have a friend who has interviewed at plenty of companies for software engineering positions and currently works at Amazon. Many times he has even walked me through what a typical interview would consist of, as well as quizzing me with common questions posed to a potential employee. I asked him for a bit more detail and he gave some valuable insight into just what you might encounter during a software engineering interview.
“For lower level SDEs, they want to know if you code and if you can think,” he said. “They ask you something that requires you to think up a solution applying well-known algorithms (or even your own algorithm if necessary, but be careful about that), and then writing a solution in code on a whiteboard.”
He continued with an example: “Common low-level SDE questions are centered around application of sorting and searching algorithms. Sometimes even as simple as writing out the algorithm or writing a data structure and then throwing in a curve ball (e.g., ‘write a singly linked list’ for part one, and then ‘write an algorithm to reverse the first N items’ as part two).”
I would like to note something critical here. More and more frequently, I notice that young kids and teens approach computer science and engineering with the false idea that the more programming languages they know, the better they are at programming. While knowing a variety of languages is a big plus on your resume, keep in mind that in the earliest days, programs were designed directly on the circuit itself. Computer science and engineering primarily revolves around problem solving.
I would advise kids who want to start out that they should stick to one language (I have grown particularly fond of C) and learn as many algorithms and data structures as possible. It wasn’t too long ago that I came across this realization myself, and subsequently designed my own linked list, dynamic array, and hash table implementations. After writing my own structures, I felt as if I had learned more than I would have by simply learning syntax of various languages, and with obvious reason. I began to apply the language I knew versus simply sitting around saying I knew the syntax.
I then questioned my friend on the importance of a college degree when interviewing; here’s what he had to say:
It used to be common that the degree was essential. These days it’s less important. Some companies are a bit more stuffy about it, particularly ones with lots of academics working as engineers. You most likely wouldn’t get to the interview process if you don’t have a degree and they care about that sort of thing. They don’t want to waste your time nor waste the interviewers’ times by interviewing a candidate they have no interest in. But most of the more relaxed companies (e.g., Amazon, Google, etc.) care less about degrees and more about raw skill.
I find it funny, really, that in recent years, tons of emphasis has been placed on going to college and earning a degree. While for most fields of study I would definitely agree with that idea, I also agree that in this new, technological era, a college is not the only place to learn the right know-how for a job. I learned how to program through various tutorials and reference sites I found online. The Wikipedia articles on various sorting algorithms and data structures also contain a great wealth of information to get you started. In addition, after watching taped college lectures of an introductory computer science course, I can say I learned in the elapsed course of weeks what most computer science majors learned in months. The Internet is truly the teacher for a new age, and those with the motivation and passion for learning how computers work and how to make them work for you can do so without leaving their homes.
Do you want to be a computer engineer someday, working at a huge tech company such as Google, Amazon, or Microsoft? All I can say is: Make sure you know your stuff.