A seasoned Software Architect with a strong Computer Science background, Anurag Kapur shares an exclusive and detailed account on— How to become a Software Engineer & land a top job.
In this video and article, he gives in-depth insights and invaluable advice on—the most crucial areas to focus on in order to excel as a Software Developer, choosing a niche, the best MOOCS for aspiring programmers, the key steps/strategy to bagging a top job in a leading tech company, the best study resources and interview preparation platforms, along with pragmatic tips on deciding for or against a Master’s degree.
About Anurag Kapur: After teams as a Technical Architect at Financial Times, London, one of the world’s leading business news and information organisations, he moved to Boston Consulting Group(BCG) as a Software Architect.
Education: MS, Software Engineering, University of Oxford
A McKinsey & Company report says, nearly half of the workforce in the IT services firms will be “irrelevant” over the next 3-4 years. There will be 1.75-2 lakh job cuts annually, for the next three years due to “under-preparedness” in adapting to new technologies.
At a time like this, it is absolutely imperative for students and young professionals to ensure they’re on the right track, in order to keep up and find top roles in startups or leading companies.
Tune in, to find answers to some of the most crucial questions, aspiring Software Engineers grapple with, straight from the expert, in this compendious account.
Competitive Programming; Code jams and Hackathons
Anurag enjoyed coding since his high school days. At the time, he revelled in building his class projects and being the first one to finish all his coding assignments. This was when he first dabbled with programming fundamentals and slowly began to learn the finer nuances of Software Development. Given he really loved programming made it a pretty easy choice for him to choose his undergraduate course.
In addition to his coursework, he actively participated in programming competitions & overnight code-jams. Also, he found that participating in Hackathons is an incredible way to learn.
“I still participate in hackathons where a group of people meet over a weekend and build a product from scratch in literally 48 hours. This gives you the experience of building a product; taking something to completion, as well as pitching it to potential investors.”
Thus, students and working professionals are recommended to get started with competitive programming and continuously challenge themselves in order to learn.
Practice problem-solving in coding challenges, hackathons and online competitive programming websites. Some platforms to get started are; TopCoder, CodeForces, Spoj, Codechef, HacekerRank, HackerEarth.
This can not only be an effective way to up your skills and improve your problem-solving ability but also help you get hired by some of the best recruiters who select top rankers from these platforms.
Get a FREE copy of:
Hottest IT Skills and where to learn them, How To Get A Job At Google & Other Top Tech Companies, Getting to a Top University for Masters: Insights by Ivy League alumni, and more.
Leave your E-mail ID below:
Software Engineering Career Path: Choosing A Niche
Software Engineering is a wide career choice, and there are myriad specialist roles that a Software Engineer can take up over the course of his professional journey.
Students often get baffled by the various options available and are unable to decide on which specific career path to set out on. They are unaware of all the different niche roles a Software Engineer can pick up, and more importantly, what exactly each of them entails.
Anurag suggests that to start with, ensure you get a good breadth of things, see what opportunities exist and not worry about going into a very specific niche right at the outset.
For your first job, don’t be picky and focus on getting, say, an Android Developer role or a Back-end developer role, instead, go for an organization where you can really build up experience as a Software Engineer, get a breadth of knowledge, and then proceed further.
Instead of making presumptions about different roles, without actually knowing what they entail in the real world, explore the different facets of Software Engineering, see which one excites you the most and then go on to make a thoroughly informed decision on choosing a niche.
“Irrespective of what specialism you think you would want to pick up in a few years’ time, the fundamentals that you need to know, remain the same across all of these specialist roles. Whether you want to be an Android Developer, an iOS app developer, a Machine Learning Specialist, or a Data Scientist, you first need to focus on Data Structures and Algorithms, become a good Software Engineer, and then become a specialist.”
Focus on Programming Fundamentals: Data Structures & Algorithms
In order to become a successful Software Engineer, it is vital to build strong foundations. Master your university coursework with a special emphasis on subjects like Data Structures, Algorithms, Operating Systems and also ensure that you build expertise in at least one programming language.
- Stanford’s Algorithms Specialization
- Data Structures and Algorithms by UC San Diego
- The Coding Interview Bootcamp: Algorithms & Data Structures(Udemy)
Students who sign up for Free Mentorship from top Software Engineers on our Free Mentor Platform often have questions on which technology and programming language they should build proficiency in.
Anurag says, “Learning programming is important, but new programming languages come and go. The things that stick, are the basics. The fundamentals that you learn in Data Structures and Algorithms apply to all fields and all work done by all programmers, working in all sorts of programming languages.”
Top companies like Google, Twitter, Facebook etc.. require candidates to be masters in Data Structures and Algorithms. This is because, when you are working on problems at scale, it is essential that you choose the right Data Structure to solve a given problem. A problem could be solved in multiple ways, but to solve it effectively, and at scale, the right choices need to be made, which wouldn’t be possible unless you have strong mastery in Data Structures.
He further explains that different companies use different programming languages.
For example, Anurag shares that Scala is very popular at Twitter these days, at Facebook a lot of code is still written in PHP, while Google used to be a fan of Python and recently Go. Thus, if these companies try to filter candidates based on the programming languages they are proficient in, they are likely to be losing out on a lot of talent.
Tapping Into Computer Science MOOCs
It is now possible, more than ever, to acquire new skills and hone existing ones with leading universities of the world offering world-class education to the masses, online. With their interactive technologies, massive online open courses can deliver top-tier education and learning from leading institutions, free of cost, or at a fraction of their on-campus counterparts.
Online platforms like Coursera, Udemy, Edx, MIT Open Courseware, Udacity, MIT OpenCourseWare etc. offer open source material available from top universities delivered by pioneers of the industry, in core subjects, as well as courses on hot technologies like Data Science, Cyber Security, Blockchain, Web Development etc.
For those interested emerging technologies say, Data Science, there is an excellent series of courses available on Coursera in the form of a Data Science Specialization by John Hopkin’s University with a special emphasis on applying skills by building a data product using real-world data. Thus, such courses give you a real feel of actually attending the university lecture, right from the comfort of your home.
- The Most Recommended Stanford Machine Learning Course By Andrew Ng(Coursera)
- Complete Python Bootcamp(Udemy)
- Machine Learning A-Z Hands-On Python & R In Data Science(Udemy)
- Deep Learning Specialization(Coursera)
- Complete Java Masterclass(Udemy)
- The Complete Web Developer Bootcamp
- Python Specialization From University of Michigan(Coursera)
- Java programming and software development in 5 online courses from Duke University(Coursera)
- The Complete Ruby On Rails Developer Course
- Android App Development from Vanderbilt University on Coursera
- Learning and Understanding NodeJS(Udemy)
- AngularJS The Complete Guide
- Cybersecurity Fundamentals in 5 online courses from the University of Maryland on Coursera
- The Complete Android 7 Developer Course: Building Real Apps Including Uber, Whatsapp & Instagram(Udemy)
- Big Data Specialization From University Of California San Diego(Coursera)
- Specialization: Data Visualization With Tableau By UC Davis(Coursera)
- Statistics for Business Analytics A-Z(Udemy)
- Full Stack Web Development in 6 online courses(Coursera)
Making effective use of MOOCs:
Even with the kind of educational experience that MOOCs offer, they have a very high drop-out rate. It is said that over 90 percent of those enrolled, don’t finish their courses. Hence, it is important that students don’t overburden themselves by signing up for too many courses. It is advised that you enrol in one course that is related to your undergrad area of study, and another to fulfil your interests in an unexplored subject.
Furthermore, when you sign up for MOOCs, remember that the objective is not just to complete the course and earn a certificate. Instead, the purpose here is to actually ensure that you understand the content & build mastery in a subject. Thus, focus on implementation and actually applying your learnings in order to get ahead.
Focus On Building Things
Invest your time in building things and showcasing your skills as a Software Engineer. Having your own blog, website, GitHub profile and sample projects that you can demonstrate, set you apart from your competition.
There are various free cloud platforms available these days, where you can build and host sample applications. Anurag advises aspirants to pick one, say, Amazon Web Services; sign up for an account, start by reading their online documentation and host a few simple example applications.
He also adds that to be a good programmer, an often overlooked method is to read good code in addition to writing your own. Open source projects can be a great source to read quality code from. So, have a profile on GitHub, and get exploring.
Additionally, take up internships while at college to further your skills in a real industry setup. Use them as an opportunity to learn more, apply your knowledge under experienced industry professionals, and actually understand how products are built from scratch in a company.
“If you can demonstrate knowledge, instead of just claiming it, you would instantly become much more employable. Imagine yourself in the shoes of a recruiter, on one hand, you have a CV of a person claiming that he knows a lot. On the other, you have a resume that lists down a LinkedIn profile, which has links to their blog, their sample projects, as well as GitHub profile.
You can actually go to their GitHub profile and see the quality of code that they’ve written. Thus, building an understanding of the mastery that they have in their coursework as well as the additional effort that they’ve put in to learn new things.”
Master’s Degree: To do or not to do
According to Anurag, if you’re unsure about what you really want to do and think of a Master’s degree as a means of landing a better package or help you move to a particular country, then you should probably think again.
The core reason why you pursue a Master’s is that you genuinely want to learn more; there are specific areas of specialism that you want to build your expertise in.
In order to make the right decision, it is crucial that you think long term. Ask yourself why you really want to go for higher education. It is really important to have an answer to this questions, and if you can’t explain it to yourself, then you will struggle to convince the admission committee. And even if you get accepted, it is unlikely that you will receive the return of investment that you’re expecting.
Think long-term, and ask yourself what it is that you want to do in the next 5 years. Consequently, do some research to find out what people, who are currently doing what you want to do, did 5 years ago, to reach where they are today. Find out about the journey they took, and exactly how they became successful.
“If you really want to study, enjoy learning and have made up your mind around a specific niche that you want to build a specialism in, then, by all means, do a Master’s. However, don’t try to use a Master’s as a vehicle to land a better package. Large organizations like Google, Facebook, Apple, don’t really care about where you’ve done a Master’s from, or if you’ve done it. What they care about, is your aptitude, which they will assess in the interview process.”
However, if you’re looking to switch fields after some extensive research and are considering a Master’s degree in the field that you now want to specialize in, or start working in, then yes, it may prove to be helpful. But if not, it is recommended that you first try and gain some solid experience rather than going in for an MS, straight after your Bachelor’s.
Landing A Top Job
The skills that you need to land a job at a company like Google, are skills that you can acquire by doing online courses, participating in code-jams & hackathons, practicing a lot of problem-solving exercises, practicing coding problems on a whiteboard, using online resources like CareerCup, HackerRank, InterviewBit, LeetCode, HackerEarth, GeekforGeeks that are filled with questions to help you prepare for top company interviews.
Additionally, there are books like Programming Interviews Exposed and Cracking the Coding Interview that contain detailed explanations around the interview process, the various stages, and how you can prepare yourself.
Interviews at these companies tend to be essentially of two types; there are 3-4 rounds where your problem-solving skills are assessed and 1-2 rounds where your System Design skills are evaluated.
Thus, not having a Master’s degree or where you went to college doesn’t affect your chances of making it to a top company, so long as you have the requisite skills, that you can demonstrate during your interview.
Related read: For a more detailed guide, read— How To Get A Job At Google And Other Top Tech Firms.
Video— How To Become A Software Engineer & Land A Top Job:
Have something to add to our account of— How to become a Software Engineer & land a top job? Let us know, in the comments below!
Do you have questions around any of the steps mentioned, that you’d like to discuss directly with an Engineer in your dream company?
Connect directly to people working in top roles and companies for guidance on our Mentor Platform.