
When I was learning Computer Science with Harvard CS50. I was so curious on how they setup the projects in such a way that they were able to test my code and be able to draw conclusions from it.
I was also curious on how it all operated on GitHub which I first believe was a website too store all of my codes.
Currently, one of my main responsibilities in projects is setting up the 'development environment'. My own definition of development environment are, it is a place where developers are able to test their code and make changes without affecting the production, it is a place where we are able to deploy our code to production and it is also a carefully setup place where there are rules or configurations to avoid anarchy.
Before the project even begins, my main responsibilities are as follow:
- Setup the GitHub repository
- Understand where the project is to be deployed
- Setup Environment variables locally and in production
- Ensure automated tests
GitHub Repository
In setting up the GitHub repository, I have studied the difference of Git and GitHub. It is a crucial step to ensure that I'm able to pass this information to my colleagues and be able to answer their questions if there are any. I believe that having a proper GitHub repository configurations can build trusts among developers and also build confidence that they are not pushing destructive codes into production. I have encountered so many colleagues of mine who are afraid to push codes into GitHub because they fear that they might do destructive changes that are not recoverable.
Project Deployment and env
One crucial step that I have also learned is to already know where the project is about to be deployed even though there is no code to be deployed yet. This realization came to me in a hard way because I thought deployment is just the way of 'uploading' your code into the internet but have realized that is much more.
Because of that, I have got hands-on experience on deploying my projects to services like Azure, Railway and Vercel. Mainly setting up environment and build configurations so that a project can properly function.
I believe that this part is the most fun part for me, I still fondly remember accessing our REST API with the link that we generated in Railway. Just seeing other people can access the REST API that I have created gave me so much joy because it meant that the code that I produce can now be potentially used by everyday normal people.
Automated Testing
The way we perform automated testing in our group is we try to create unit testing for each part of the code which is then ran in GitHub actions, this is to ensure that the code that we produce does not cause any errors in production.
I believe that there is an art in writing tests which I have not quite gotten yet as of now, but I do believe that someday I would be able to write efficient tests for my software.
At first, it was kind of unnecessary because most of the services that we use already perform testing before pushing the code into production. But I have just found out that it is painstakingly slow and can be extremely fast when tests are coded by the developers instead of relying on the service.