What I Learnt as a Backend Engineer Intern in Singapore
And all the technologies I had to master
Introduction
Hello! University is starting soon and the summer break has just ended. Having interned at Ohmyhome as a backend engineer intern, I thought it would be nice to pen down some of the technical things that I experienced in my 3 months.
My friend, Silas, also shared a post about his time as a data intern so if you would like to read more about some of the technologies he learnt, you can check it out here.
Even though Ohmyhome is a Property Tech company, the fundamentals of how the backend functions doesn’t stray too far away from most other backends in other companies. So hopefully, this article will give you a better sense of what it's like to intern as a backend engineer.
Content Page
What is Backend
pictorial representation of backend
Just a brief introduction to the roles and responsibilities of backend in general -- they write the logic for server-side functions (APIs, database queries) for web applications. This is in contrast to client-side functions (UI/UX, app layout and structure) that involve front-end developers. Although the 2 types of developers have different roles, they need to work closely in order to deliver the best applications.
Another important aspect of backend engineering is optimising code to allow the application to run at breakneck speeds. Imagine using a mobile application that takes minutes to load upon every click, I would get so frustrated! Some common backend scripting languages include Ruby ( with Rails), Node js and Go.
API
api is how applications communicate
One of the biggest concepts in the backend is API (Application Programming Interface). APIs are essentially a medium for applications to communicate data with each other. They are used within a system as internal communication channels or to interact with external tools to retrieve some information. One example of external APIs is this Onemap API, where you can input a location search query and it will return specific geo-data about the location like longitude and latitude.
More often than not, my job mainly revolved around internal APIs, creating endpoints or fixing bugs in existing ones. I would say more than 50% of the time, I was either improving on existing APIs, implementing new ones, or migrating APIs from the old infrastructure to the current one.
One key concept is RESTful API -- REST stands for Representational State Transfer and it is an architectural style (I want to use the word “framework” but it has another meaning in programming) of building an API. One important property of a REST API is statelessness, which means that the server doesn’t store information about previous requests. In other words, one request cannot depend on any other request.
In many of the APIs, they have functions that interact with databases. As such, I spent much time reading PostgreSQL queries. Postgres is an open-sourced relational database management system. I learnt about Entity Relationship Diagrams (ERD), primary keys and of course how to write my own queries to grab the necessary data for the API to function.
A tool that proved very handy was pgAdmin which allowed me to test the SQL queries and check the resultant table before implementing it in the code. It also gave a good pictorial view of what was happening to the tables.
API testing with Postman
using postman to do checks and test
Postman is a development tool which I mainly used to test and document APIs. It has many features such as testing with the different HTTP requests types (GET, POST, DEL, PUT), saving environments for repeated use and even changing authorization headers. I mainly used it to ensure that the API I edited is functioning as it should and that the return json body is also as expected.
Another interesting feature that Postman has is Collection Runner. It lets you run all the APIs in a collection for faster testing and churns out test reports. If you upload a file to the collection runner, you can test for thousands of scenarios. If the API makes a certain change to a database table row, for example, and you want to repeat the edit for every row, the runner does it for you automatically without writing a single line of code. However, it does take a while if the table is large.
Git and SourceTree
branching and version control with git and SourceTree
Without a doubt, version control with Git is a must-know for working in a team. Git is basically a way for a group of developers to coordinate code. As other programmers are constantly adding new features to different parts of the project, git helps with the tracking and integration of all the changes.
I didn’t know much about git before joining the backend team as most of the programming work I did was solo. SourceTree, a Graphical User Interface for git, did help with my understanding as it is less abstract compared to using git with terminal commands. With SourceTree, it is also much easier to conceptualise the merge and branch paths, view branches (in origin and local) and reverting commits!
Elastic Search
elastic search is like a search engine for your database
ElasticSearch is a document-oriented database where you can store and search for data quickly. It functions as a full text search engine, much like using google search in your database to return relevant documents related to the search query. In layman terms, ElasticSearch will take your data, break it down into keywords or phrases and index them. This allows you to search for documents via keywords within milliseconds. ElasticSearch databases may not be as common as SQL databases or MongoDB but it’s a really interesting concept!
Conclusion
I hope this sharing was informative and gave you a sneak peak to some of the things a backend engineer intern does. I got to thank my lucky stars because this internship exposed me to many of the backend softwares. I have a strong feeling, in other companies, the exposure they give to the interns might be a lot less. If you are looking to dip your toes in a plethora of softwares, do find a company whose job scope fits that criteria! Don’t blindly apply!
If you enjoyed this article, do check out this other post if you want to know more about the day in a life at Ohmyhome and big-picture lessons I’ve learnt. Stay cool cucumbers!