Frequently Asked Questions
About Software Engineering…
▶️ Watch my video on “How to become a Software Engineer”
-
I can think of three ways to become a Software Engineer. One: going to college (computer science degree or similar). Two: going to a coding bootcamp. Three: study yourself (internet, YouTube, etc.). Time-wise, college takes the longest with up to 4 years, bootcamp about 12-18 months, and self-study depends solely on your commitment. College is the most expensive choice of the three, bootcamp anywhere between $8,000 to $20,000, and studying by yourself, in theory, can be done for free. For more detailed advice, watch my video on How to Become a Software Engineer
-
Build projects - I call it a professional portfolio.
Start with a full-stack website; web devs are the highest in demand.
Create at least two high-quality projects (👉 Sample project ideas).
Prepare for coding interviews (👉 How to Prepare LeetCode Effectively).
Create a resume (👉 How to Craft an Effective Resume).
Apply.
-
The industry prefers college graduates or those with a computer science degree (or similar), but that doesn't mean you cannot become a Software Engineer without one. I've seen plenty of people from a non-CS background who successfully transitioned to Software Engineers, including those in FAANG. For more detailed advice, check out my video on How to Become a Software Engineer
-
The answer depends on your goals. College is not cheap and takes some years to graduate, but for good reasons. Imagine competing against other engineers who completed their degrees after several years of commitment. Software engineering is not easy and requires expertise. College, if done right, will prepare you with the fundamental skills sought by the industry. If your goal is to succeed in the industry and climb the corporate ladder, a college degree will surely help. On the other hand, if your goal lies solely in landing a job, then college isn't necessary.
-
It's never too late to start anything; the same applies to software engineering. Let me convince you with a real-life example. I had a colleague who used to be a navy officer. He joined a coding bootcamp in his late thirties and got his first job as a software engineer at Microsoft. There are countless stories similar to my colleague's, and there's no reason why it shouldn't be yours ;)
-
Programming isn't for everyone. For that reason, I believe it's critical that you first find out whether programming is a good fit or not. I do not encourage anyone to spend hundreds or even thousands of dollars on something you might end up not pursuing, especially when there are tons of free resources on the internet! Start with this one-hour-long Python crash course for beginners. Get a taste of it, and see whether you like it. If you find it fun and intriguing, great! Let's explore the next steps. If you find it challenging and hard to follow, then programming might not be the right path for you.
-
Let me put it this way. Of all college new hires I've seen in FAANG, I have NEVER seen one without any internships. There are two important lessons to learn here. One, they worked their way up. Two, conglomerates also dislike lack of experience. As with all other companies, they want to hire top talent. Getting your first internship will not be easy, but as with all things, job searches will get easier as you grow muscles. If you are in college and eager to start your career at FAANG, do not let your summers go to waste. Putting in the effort to learn and grow while everyone else hangs out on the beach is an opportunity for you to stand out 😎 (I even went far to find an unpaid internship. Check out the full story here)
-
To land a software engineering job, remember these two things: your resume and LeetCode. An excellent resume is needed to get interviews, and a good problem-solving skill (LeetCoding) to pass it. Check out my videos on The Winning Resume and How to Effectively Prepare for LeetCode
-
Everyone has to start somewhere. I strongly recommend starters build several high-quality portfolio projects. Why? Recruiters and hiring managers all look for one thing: work experience. The closest thing to work experience you can claim on your resume is your projects. Think of projects as non-paid professional work. Of course, your projects should also be at or near-professional level. Learn how to build a strong resume here
-
From my experience of interviewing and receiving offers from companies like Google, Microsoft, Amazon, and eBay, LeetCode and its premium subscription are worth every penny. Software Engineer interviews are focused heavily on problem-solving skills. Strong fundamentals in computer science, especially Data Structures and Algorithms (DSA), are required to pass them. Check out my video on How to Effectively Prepare LeetCode for tips.
-
In detail, check out my video on How to Effectively Prepare for LeetCode.
In summary,
1. Start from LeetCode Top 100 Liked Questions. Don't bother with hard questions now. Solve about 50 questions here to get a good sense of LeetCoding.
2. Focus topic by topic. Don't jump into the jungle attempting questions at random. Pick a topic and stick with it until a pattern "clicks."
3. Order the questions from highest to lowest acceptance rate and NOT by difficulty. Not all easy questions are easy, and not all medium questions are that hard.
4. Learn from the solution. Don't spend more than 30 minutes on a single question. Instead, look up the answer and learn from it. Revisit the same question until you can solve it without looking at the solution.
5. Solve company-specific problems. If you are aiming for a specific company, there's no better way to prepare than to solve the questions they frequently ask.
Start with these topics: Two Pointers, Sliding Window, Binary Search, Recursion, Binary Tree, Backtracking, DFS, BFS, Linked List, Graph, Sorting, Trie, Dynamic Programming.
-
If you're looking outside the big tech, you don't need to be good at DSA. Not all companies conduct coding interviews, especially the smaller ones. If your goal isn't landing a job at FAANG('ish), work on projects instead of grinding LeetCode. They're likely to weigh your practical skills more than some coding challenges.
-
Python wins since it's quicker to write. You don't want to waste even a minute fighting the syntax during your interview. It's also the dominant language within the LeetCode community, and most solutions are in Python. However, remember that the best programming language for your interview is always the one you know best. If you are not fluent with Python, stick to the one you are most comfortable with. For a more detailed explanation, check out my video on The Best Programming Languages for LeetCoding
-
There's no such thing as the best programming language. Every programming language has pros and cons and its uses. If you are new to programming, start with Python to see whether you want to pursue this career. If you are serious, start looking into HTML, CSS, and JavaScript. Master one language, and you'll realize that all programming languages are virtually alike. You can find a more detailed explanation in my video, The Best Programming Language for You.
-
I genuinely believe the best way to learn anything is by doing it. I promise you that you'll learn substantially more by building an application than by watching YouTube tutorials. It doesn't mean the videos aren't worth it; you'll need to follow along and put in the effort of writing the code yourself. Pick a topic or a simple real-world problem you'd like to solve. It doesn't have to be the next Amazon or Facebook. Learn how to develop a website end to end (full-stack). Check out my video on Learn to Code for Free for resources and ideas on good projects.
-
Try to build something that interests you or solve a real-world problem. It doesn't have to be the next Amazon or Facebook, but try your best to make it at or near-professional quality if your goal is to get a job. Build an app full-stack to prove that you are familiar with the end-to-end process. MERN stack (MongoDB, Express, React, Node) is an excellent choice as it allows you to create an entire app front to back with JavaScript alone. I have a friend who built an online menu for a local restaurant. The owner wasn't tech-savvy, so he helped him build an online presence. For more information and ideas, check out my video, Learn to Code for Free.
-
GPA is important for your first job, but that's about it. We've all seen Frying Pan fail his exams for a job offer. It becomes less important as work experience stacks. I don't even mention my GPA in my resume anymore! Companies don't care about your GPA once you have 2-3 years of experience; your work experience speaks for your skills. However, that doesn't mean you can trash your GPA. The value of your GPA depreciates over time, but it's still essential for internships and your first job.
-
Internships: I've never met a college new hire at FAANG without an internship. Work experience is always the number one thing companies seek.
Projects: Prove you are ready for the industry with a personal portfolio. Treat them as non-paid professional work. Building a full-stack website is a good start.
GPA: Let's admit it. GPA's the only metric companies can use to compare you against other students if you don't have the things above. While a high GPA is not an absolute requirement, it'll help you stand out among other candidates.
TA: If you can, become a teacher's assistant in a programming course.
Courses: Take as many programming-related courses as possible, especially Data Structures and Algorithms.
Competitive Programming: Top rankers here easily attract FAANGs.
Extracurricular: Participate in Hackathon, competitive programming club, software development clubs, or anything similar. Honestly, anything non-programming-related doesn't add much value to your profile.
Check out My Winning Resume -
C++. Games rely heavily on hardware, and its proximity to low-level components allows you to write highly optimized and efficient code for gaming. The excellent performance often results in a quality gaming experience, which is why C++ is the choice for most triple-A titles. Another good language to consider is C#. Unity is a popular game development platform, and developers can use C# to write in-game scripts. Just a side note, C++ isn't my recommendation for your first programming language. Consider it only if you are serious about game development or becoming a software developer in general. Find out why in my video on The Best Programming Language for You.
-
Let me put it this way. They do help but are not an absolute requirement. My colleague was a navy officer before joining Microsoft from a coding bootcamp. Work experience is valued way more than school diplomas. What they're looking for is skills and expertise, not titles. The same goes for FAANG.
-
I cannot predict the future, but I can share an anecdote. More than a decade ago, back when I was still in college, many believed that the software engineering industry had oversaturated. The pessimists expected the demand would decline as machines would soon replace them. Sounds similar? The moral of the story is to stop doubting and continue coding; software engineering isn't going anywhere anytime soon.