As a software developer on the hunt for exciting opportunities, take-home assignments have become an essential part of my job application process. These assignments are a great way for employers to evaluate candidates’ coding skills, problem-solving abilities, and approach to real-world scenarios. Over time, I’ve tackled numerous take-home challenges, each with its unique set of requirements and complexities. In this series of blog posts, I’ll be sharing my experiences working on these assignments, starting with three latest projects: one for Fovus Tech, another for Fetch Rewards, and a third for Roulettech Inc.
Fovus Tech: Full-Stack Challenge
The first assignment I’ll dive into is from Fovus Tech. This coding challenge was a comprehensive test of my full-stack development skills, specifically focusing on AWS services and React.js. The task was to build a responsive web application with the following key components:
Responsive Web UI: Using ReactJS, I created an interface with text and file input fields.
AWS Integration: The file had to be uploaded directly to S3 from the browser, with its path and associated data saved in DynamoDB via API Gateway and a Lambda function.
Automated Script Execution: Upon successful file upload, a VM instance (EC2) was automatically created to execute a script. This script retrieved inputs from DynamoDB, processed the file, and saved the results back to S3.
The challenge emphasized best practices, such as using AWS CDK for infrastructure management, avoiding hard-coded credentials, and adhering to security guidelines. In a future post, I’ll provide a detailed walkthrough of my approach, the technologies used, and the lessons learned during this project.
Fetch Rewards: Android Mobile Apprentice Exercise
Next up is the Fetch Rewards Android Mobile Apprentice exercise. This task required me to create a native Android app using Kotlin. The app had to fetch and display data from a given URL, with specific requirements for data grouping, sorting, and filtering:
Data Retrieval: Fetching data from a provided URL.
Data Display: Grouping items by “listId” and sorting them by “listId” and “name”.
Data Filtering: Excluding items with blank or null “name” values.
This assignment was a great opportunity to showcase my mobile development skills and my ability to work with APIs. In an upcoming blog post, I’ll share the details of my implementation, including code snippets, challenges faced, and how I ensured the app met all the requirements.
Roulettech Inc.: Full-Stack Web Application
The third assignment I’ll discuss is from Roulettech Inc., where I was tasked with building a simple web application using React.js for the frontend and Django for the backend. The requirements included:
Frontend Development: Creating a React.js web page to demonstrate my proficiency with React components.
Backend Development: Building at least two API endpoints using Django. (I made an MVP Recipe App with with well over 2 endpoints)
AWS Deployment: Deploying the frontend on AWS S3 and the backend on AWS EC2, ensuring public accessibility.
Bonus points were given for using AWS CloudFront for CDN and creating a custom VPC. This assignment not only tested my full-stack development skills but also my ability to deploy applications on AWS. In a detailed blog post, I’ll cover my development process, the tools and frameworks I used, and the deployment strategy.
Conclusion
Even though there may be “people better suited for the role” and I may not always get the job, I always strive to give 110% in these tests, knowing that I am learning something new each time. For instance, in the Roulettech project, it was my first time working with a private VPC subnet. I was initially lost on how to even make my backend server on a private instance that does not have a direct internet connection. However, through persistence and problem-solving, I managed to navigate through the complexities and successfully complete the task.
Take-home assignments are more than just a step towards landing a job; they are opportunities to grow and expand my skill set. Every challenge, whether or not it leads to an offer, enriches my experience and prepares me better for the next opportunity. Join me as I continue to learn, adapt, and evolve through these assignments, sharing my insights and experiences along the way. 😄🙌🏻