My was “When given a take-home assignment, what is a reasonable turnaround time to get it back to them?” I now know it’s within a week.
I was given the assignment to create a basic Django app and was told to spend no more than 3 hours on it. Here’s the short text of the assignment description:
Table Metadata Extractor (Python)
Please provide a Python Django application that has one API endpoint which accepts a database connection string from your DB of choice (Redshift, BigQuery, Snowflake, MySQL, Postgres), connects to the database using and returns a list of the TableMetadata data objects (see below) for all tables in the database.
TableMetadata = {
columns: List[ColumnMetadata]
num_rows: int
schema: str
database: str
}
ColumnMetadata = {
col_name: str
col_type: str
}
Bonus points for:
·        Instructive error messages for improper connection strings or other invalid input
·        A solution that is efficient
As a Data Engineer/Analyst, I haven’t done web-dev stuff in years and have never used Django. My immediate instinct upon reading this project description was to find a resource to learn Django online. I’m not sure this is the right instinct, because software is about doing more than learning as Alex has mentioned so many times.
The way I see it, I have 3 ways to approach this assignment:
- The way I just mentioned. Go down a learning path (hopefully not a rabbit hole), learn about Django and try completing the assignment.
- Dive right in, try building the solution from scratch, Googling and ChatGPTing liberally.
- Don’t do the assignment, spare myself the time and headache, and beef up my Python web-dev skills for the future.
The first approach requires the most upfront time. The second might be longer or shorter than the first. And the third doesn’t require any upfront time but requires a commitment to being in a much better position to do the assignment in future.
This is the second time in a couple of months I’ve been in this position since I was given an assignment for a different company to build a Flask app and did a shoddy job with it.
My first question is, which of the 3 options should I do to address this time-sensitive situation?
My second is, how should I address this situation long-term? Building some web-dev projects in Python with Flask/Django/FastAPI seems pretty logical. I don’t get to work with them at work, but I could spend a few weeks building stuff with them. I guess that’s the answer, the key is to avoid tutorial hell.
My third is, how should I think about take-home assignments in general? Should they stretch me a lot in terms of learning new things or conversely, should I be, say, 80% comfortable with what I need to do, just stretching a bit here and there to do stuff?
Thanks!