My Internship Experience At CAW Studios
I had the opportunity to intern at a startup CAW Studios located in Hyderabad, India for 6 months. We all have that Baby’s Day Out moment where we get a glimpse of the “REAL WORLD”. This Internship was my “Baby’s Day Out” getting Industrial Exposure.
Here’s a story with snippets of my journey so far at CAW Studios.
About CAW Studios
CAW Studios is a Product Engineering company. There is a misconception that CAW Studios is an IT services company, but it is not. A product Engineering company focuses more on the development of the product(solving problems, brainstorming) rather than meeting the requirements of a product. Some of the Products CAW Studios has worked on are FastBar, GrowthZone, CashFlo, BabyDestination, etc.
Project
I was assigned to the project CashFlo.
Cashflo is a Supply chain finance application. It is an end-to-end invoice discounting platform which connects Buyers, their suppliers (vendors) and financial institutions in a single platform.
These different organisations in a supply chain collaborate to make early payment requests profitable to all.
WORK
Instead of generic monotonous tasks, I was assigned variety of work. I has chance to work on AWS cloud, Business tools along with back-end in code base.
Like:
- CRON Job to Send Automated emails to Operations using SendGrid.
- CIBIL integration with CashFlo- AWS Cloud Formation
- Sending WhatsApp notifications with PDF attached to it.
- Automatic End of the Day summary excel sheet to buyers.
Learning Experience
Code Practice
Every company has core values that they adhere to, which are evident in all of their works. And the one thing that people at CAW are obsessed with is “Treat your Code as art”.
The code should be beautiful. Why so? It would still work the same way? Why should you spend your time making it pleasant to look at?
What are the differences between code written by a senior developer and a junior developer? Techniques used, knowledge base, All these are true but along with one more thing “Their code is structured, pleasant to look at”.
In Industry, we are not fixed to one project, teams change, people come and people go. So when a new person looks at the project, he should be able to understand it, and appreciate it. Things like extra blank lines, ugly indentation, and random file structure may seem insignificant but they have a direct effect on the performance of the coder (new ones).
Back To Basics
From Day 1 of the internship, we were put on a learning path where we had to finish courses: Javascript basics to Web development to Practicals. As an engineer, we have to know all the How’s and Why’s rather than just blindly building them. The idea was to create a strong foundation before we work on Real-World Projects.
Linting And Code Styling
Linters are tools that enforce code quality. It helps us diagnose errors, fix issues, maintain consistency in code, etc. They are setup during the creation of the code base of a project.
Example: ESLint is used for linting in some of the node js projects in CAW Studios.
There are style guides and code formatters which automate the process of styling the code. Here AirBnB style guide and Prettier are used for code styling.
Examples:
Prettier use case
Es-lint use case
MVC structure
MVC is an Architectural Pattern that is followed to separate different logical components of our application.
- Model
- View
- Controller
The main layers of MVC structure followed for structuring Codebase in CAW studios are:
- Repository Layer
Here communication of the application with databases takes place
- Service Layer
All business Logic of the application takes place here.
- Controller Layer
It acts as a layer between the user and the core of the application and handles requests and responses.
- Middleware
As its name suggests, It comes in the middle of the request and response cycle. Error Handling takes place here. Example: Error-handling-middleware: It catches errors thrown throughout the application and handles them accordingly.
- Models and Payloads
Models are data objects that are used to communicate between the logical layers i.e. Controller ← →Service← →Repository.
Payloads are packets of data sent from the user and to the user (response-payloads).
Automation
Right from the get-go one of the practices followed at CAW studios is to “Automate Everything”. So even for the assignments given at the start, we were asked to dockerise the code base and deploy it to AWS Elastic Container Service via GitHub Actions.
Insights Gained
One of the main appealing qualities of CAW Studios is its principles. Their obsession with code quality and their practice of “solve before code” are the ones that attracted me the most and are something that I will follow throughout my career as a Software Engineer.