A Guide to Software Engineering
About the Writer
I am currently working as a Software Engineering Intern at SAP Singapore, where I work with distributed cloud systems in the backend, to scale and ensure reliability and availability in containerised applications. I will be interning in TikTok Singapore, where I will be working on backend engineering in the LIVE platform.
What is Software Engineering
If you have done SC2006, software engineering feels like it is just the creation of a software application for a client with some requirements. However, modern software requires more than that – the work of a Software Engineer includes designing the system of the software, the software itself and its database, the pipeline that delivers the software, the maintenance of a software that has been built, its security, and so much more.
Why is this field important in today's industry?
The field is extremely important in today's industry, as it powers most companies to improve productivity and reduce manhours in various tasks. For instance, a generative AI chatbot in a company's landing page could reduce the number of workers needed for customer support greatly. Major technological companies like Google power the world today, and it couldn't have been built without great optimisations in cloud systems – an example of this is the invention of Kubernetes.
What kinds of companies or industries need software engineers?
Most companies need software engineers, ranging from government organisations, to big banks. Software engineers have the capability to code automation that can save lots of time and allow for reduced human error, as compared to manual tasks. With the advent of generative artificial intelligence boosting the productivity of various companies, it necessitates the demand for software engineers to help each company stay at the cutting edge of technology and remain competitive.
Why are internships important?
I believe that internships are essential in the industry today. Firstly, the curriculum teaches us only the base of what we need to know, and having experience implementing systems on the ground gives you a definitive edge over other applicants. Secondly, industry experience will help you learn essential real-world techniques that helps you to develop good systems. For instance, having good version control, and maintaining a Continuous Integration and Continuous Development (CICD) pipeline for an application to ensure consistency in deployment are skills that are not covered in school. Lastly, with the ever-increasing demand for jobs in this industry, it is essential to gain experiences that are relevant to your future full time employment.
You can find internships at many places, not limited to:
- Indeed
- NTU CareerAxis
- InPlace portal for your professional attachment
An underrated technique to find internships would be through networking – join different clubs and societies outside of school to meet experienced developers who may be looking for interns. One example would be Better.sg, a tech-for-good volunteer organisation that builds applications for social good.
Personal Journey
How I got started in Software Engineering
I gained interest in this field when I learned web development from CS50, a free online course by Harvard University that teaches you the fundamentals of coding and development. Since then, I have built other side projects to explore different stacks of technology (frontend, backend, cloud, devops).
How internships shaped my understanding
The internships that I participated in helped to shape my understanding of technical concepts, through implementation and feedback. While working on tasks, it is inevitable that you would have to research deeply online about certain technologies. This helps you gain a deeper understanding of how it was implemented, and how applications work together. At the same time, senior engineers would help to review your code and provide suggestions, helping you to understand your flaws or learn new techniques to improve your coding productivity.
Key lessons learned
However, I believe the key lesson would be the soft skills – taking the initiative to help with others' tasks even when nothing is assigned, and going beyond what was assigned to bring additional value to your task. These skills will help you become a better team player and more likable person.
Recommended Learning Paths
Getting Started
To start exploring this field, you should firstly work on your own projects to gauge your interest in the field; simply copying a YouTube tutorial to build your own Gen AI powered chatbot, and tweaking it to your own use case would be a good start. Of course, it is essential that you understand every section of the code added.
Early Career Development
Next, you should try to find a start-up to intern for, in your first and/or second summer. Companies rarely ever take Year 1 students – big tech companies are the only exception, but be prepared for advanced algorithm/development questions. Start-ups are the best companies to gain experience in, because of the fast pace of work, and the exposure to every facet of their stack, meaning you will likely be pushing code for them regularly.
Technical Preparation
Optionally, you can focus on studying for online assessments through platforms like LeetCode and CodeForces (only if you are proficient in LeetCode), because most companies have 1 or more coding rounds. Be sure to understand not only the reasoning behind using a certain algorithm, but also the time complexity, and possible follow up questions. For instance, recruiters could initially ask you to find all pairs of numbers that sum up to a certain number, and then change the question to ask you to find all triplets instead.
Third Year Milestones
By the third year, you should optimally have some industry experience, as well as relative proficiency in algorithmic coding – these are not mandatory, but they are essential to pass the resume screening and initial online assessments for medium to big tech firms.
Resume and Application Strategy
At the same time, you should have a well-crafted resume to assist you; it is said that recruiters spend less than 10 seconds viewing each resume. For instance, Jake's template is a very popular resume that has helped many. Additionally, be sure to hide your GPA if it is below 4.2, as some companies unfortunately fixate on your results – this will help them focus on your industry skills instead.
The final tip would be to apply as soon as possible. Although this is a myth, it is believed that resumes are viewed in sequence of application submissions, and beyond a certain cut-off, your application would not even be viewed. Therefore, when using platforms like LinkedIn, you can change the date ranges to only show you applications that were posted within the last 3 days or 24 hours.
Interview Preparation
Types of Technical Interviews
The interview could consist of different components.
-
Start-up Interviews
- Start-ups tend to ask you to develop a proof-of-concept on the spot, or ask software related concepts.
- For example, I was asked to code a social media application on React.js with certain requirements.
- These companies are interested in whether you are able to deliver with certain technologies in your resume.
-
Tech Firms and Investment Banks
- Technology-based firms and investment banks tend to ask you core concepts about Computer Science.
- You could be asked anything between database design, data structures and algorithms, networking concepts, operating system concepts and more.
- At the same time, they often ask 1-3 medium difficulty coding questions.
Above all, you will do well as long as you study your core Computer Science concepts well, and you are deeply familiar with each technology that you indicate in your resume. Lying on the resume can only help you pass the initial screening stage.
Behavioral Questions
Other than coding rounds mentioned earlier, all firms are likely to ask behavioural questions. The most common and essential question would be: "Why did you choose our firm?". It is paramount that you familiarise yourself with the company's background to gain additional brownie points. At the same time, these are common questions:
- What are your strengths and weaknesses?
- Give me an example of when you worked as a team / lead a team for a technology-based project.
- Give me an example of when you handled conflict / spoke up about unethical practices etc.
It is important to have at least one interesting story that you can twist to answer different variations of these questions.
The Reverse Interview
Your value comes at the end of the interview – the reverse interview. You must make sure to be interested in what the interviewer does, relate to their job scope, and show why you would be a good fit in their team. This stage is severely underrated, but it can be the make-or-break in terms of your cultural fit to the team. In fact, this skill has helped me do well even in interviews where I did not perform the best technically. Remember, the interview is essentially a way for you to pitch yourself to an investor who will invest time, money and experience to you over a few months.