I joined CarWale as an intern on 4th January, 2022 and post internship, I am working as an Associate Software Engineer. This was my first ever internship and job and I am glad its been a fruitful experience.
I certainly misjudged the scale at which CarWale operates. When I was researching about the company, I believed that their website was rather simple looking (I mean, a few DB calls here and there and you get the required data for a page, right?). College will not prepare us for the type of work we end up doing and I realized their scale of operation when I gave my interview and later when I got the repository access. And things felt really overwhelming in the beginning. Things have stabilized now and I wish to share what I have experienced with everyone.
A full stack project
I did not have a proper full stack project in my resume when I sat for college placements. What I mean here is that the projects in my resume did not have any defined tech stack. Tech stacks like MERN and MEAN will teach you a lot. Back in college, I had 5 to 6 projects in my resume to compensate for no work experience. I was told by few of my interviewers that it is better to have a couple of detailed projects than to have multiple projects with less complexities.
Deciding which project to work on is very time consuming. You can create clones of existing products like Facebook, YouTube, Netflix, etc or you can search for hackathon problem statements. Choose a topic which is fun and feasible and work on it. Apart from all this, you can learn and integrate the following things while working on your projects:
- Caching : Almost every company utilizes caching, because it is a necessity if we wish to build performant software. You can research about Redis or Memcached or some other technologies if you are keen on learning it
- N-tier architecture : You can seperate your project into various files/folders, each responsible for handling a specific type of logic. This practice improves code maintainability
- Host your projects : If your interviewer asks for a demo and you are unable to give them a demo, then your projects mean nothing. Platforms like Heroku, Vercel, Netlify, etc. to host your projects for free.
- Content Delivery Networks : CDNs are used to retrieve static assets like images, javascript, etc. You can research about Imagekit, AWS Cloudfront, Cloudflare, etc.
- Testing : Probably the most boring thing to learn and do in this list. You will test the stuff you make at work before releasing it. If you do end up adding tests to your projects, you will surely get bonus points in your interview.
Git and Github
The obvious tool you will need in your arsenal. I have been using Github Desktop and it certainly made my life easier. But its always good to know what commands are being executed in the background when you interact with the GUI. When I joined CarWale, I knew the bare minimum like committing, checking out and merging branches. Apart from basics, the following commands should come in handy (do read about them before using them):
git pull origin branch-name
: Get changes of mentioned branch in current branch. I use this to sync my current branch with its base branch or to resolve conflicts in VSCodegit branch
: Lists all branches in local repositorygit branch -d branch-name
: Delete a branchgit branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D
: Delete local branches that have been deleted from remote repository. You may have to executegit remote update --prune
before executing that command
Web Development
For the last 10 months, I have worked on the CarTrade website, particularly the New Cars pages. Revamping is still in progress, but I for sure have learned a lot about web development.
Debugging
Something that you will be doing extensively at work. The reasons to debug can range from fixing API responses to finding out which div tag was not closed in your HTML page. Regarding frontend/javascript debugging, the only way I know is by adding breakpoints to your javascript file in Sources section of DevTools. Regarding backend debugging, similar methodology is to be followed. CarWale's backend is primarily made of C# and VSCode's debugger comes in handy. You will also debug microservices and might have to use some other tool (gRPC UI in my case).
DevTools
DevTools is the panel which pops up when you inspect a website in Chrome. Although a similar panel is also available in Firefox, I will be focussing on Chrome's DevTools as it is packed with features. Most of my time is spent using Elements, Console and Network tool tabs. Another tab that I frequently use is Search (Check in 'More tools' of DevTools if that tab is not present). Using it, one can search for a term and the DevTool will return a list of files where that term is present. Apart from this, I have also used Lighthouse extensively. It has helped me to compare the performance stats of the newly migrated pages with their previous iteration.
Performance and SEO
Focussing on our website's Web Vitals is very critical nowadays. Good web vitals not only indicate a performant website, but also indicate that our website can have a good ranking when searched on the web. During CarTrade's migration from PHP backend to .NET backend, I mainly focussed on improving the website's Cumulative Layout Shift (CLS) metric.
Conclusion
Final tip that I would like to share is to observe and listen. Every now and then you will hear some buzzwords. Your team mates and seniors will teach you many things, but you will learn more by remembering those buzzwords. Then if you are curious enough, you should research about those terms. This works like a Domino effect - if you research about some buzzword, you will stumble upon some new jargon. This is how I learned many things in the last 12 months.
Thank you for reading! 👋