Profile picture

Learning Quickly Q&A and Videos

About Learning Quickly

How Long to Complete Take-Home Assignment II

Data Engineer at Financial Company profile pic
Data Engineer at Financial Company

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:

  1. The way I just mentioned. Go down a learning path (hopefully not a rabbit hole), learn about Django and try completing the assignment.
  2. Dive right in, try building the solution from scratch, Googling and ChatGPTing liberally.
  3. 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!

Show more
Posted a year ago
277 Views
5 Comments

How can I best invest my personal development time as a Staff Engineer who would like to continue progressing as an IC?

Staff Engineer at Taro Community profile pic
Staff Engineer at Taro Community

I'm a Staff Engineer in the satellite telecommunications industry where I am responsible for the strategic success of the software products in my department. My organizational responsibilities and weekly calendar align almost perfectly with the . I'm sure that it will come as a surprise to no one that getting to this point in my career was an intense and conscientious journey. I am self-taught, I fell in love with programming as a child, and I have never attended a University. Things are not even close to perfect, but I am happy with my career so far.

My day-to-day work does not involve much programming, but I spend the vast majority of my time communicating with Tech Leads, Scrum Masters, PMs, TPMs, EMs, etc. to coordinate and accomplish different tasks. The rest of my time is split between communicating and aligning with high-level product stakeholders, such as my boss, and mentoring engineers. When I do code, it is because there is some experiment I want to run, i.e., I might create a prototype of a new product or feature that could massively impact a departmental OKR.

Outside of my day-to-day work, I dedicate as much time as I can to learning and practicing new technical (programming, cloud), professional (LinkedIn Learning), and domain-specific (satellites, AI) skills. I also consume a lot of content here on Taro and I often participate in company and community programs that I believe in (change maker programs, diversity and inclusion programs, etc. as a participant or as a coach).

I would love to have input on this aspect of my career as a Staff Engineer who would like to be a Fellow one day. As I make progress in my career, I find that (obviously) the expectations others have of me, in regard to being at the forefront of technology and really knowing what I am talking about in domain-specific (science-heavy, business-heavy) topics, have grown exponentially. I've already adapted my approach to developing domain-specific skills, for instance, instead of relying solely on MOOCs, I also now have regular sessions with domain experts (business folks with advanced industry-relevant university degrees), something my boss encourages and expects me to continue to do. I have now also considered the prospect of going to university myself, something my employer would sponsor.

So the question is, how can I best invest my personal development time so that as I progress in my career I can continue to meet, or even surpass, exponentially growing expectations?

I'm sure someone will have a great idea of how to approach this challenge. Also, there is a quote I appreciate from Alex Chiou that gives me hope that I can do it.

It wasn't due to natural talent or anything - I'm honestly not that smart.

Show more
Posted a year ago
256 Views
4 Comments

Advice for Feeling recognized in the team, while switching domain (e.g. C++ to python)

Senior Software Engineer at Taro Community profile pic
Senior Software Engineer at Taro Community

Hi Everyone,

I am a senior software engineer in my company. We are an R&D company who work for the retail industry. I work in the Computer Vision and systems area.

I joined this company as a senior software engineer. Initially, the project that I was hired for had C++ work but that project was scrapped and we worked on a new product where everything was Python and lots of DevOps tools.

Now the problem that I am facing is all my colleagues who are software engineers know a lot about Python and these tools. I have never used them so far. For me, it was exciting that I was using these new tools which were very necessary in the current industry but I was anyways slow and my code quality and the way I designed things never matched the team's ways of things. I know everybody says that the fundamental principles are the same but I found there are some pythonic ways which are way better than a person who is learning it. Additionally, I was a Senior Engineer, so the manager and lead always came to me and said that they expected more from me. I was not contributing enough.

I feel it is normal to expect things from me as I am a senior. The main problem that I face is I don't feel myself important to the team. Most of the development or coding is done by the rest of the team. I even see they are given more design and senior role work too. I am given very small things. Honestly, even I don't know if I will be able to work on designing systems using these technologies. It affects my confidence and so I am never confident in my work, I have a constant fear that I can lose my job anytime. I don't feel proud of my work anymore now. I have learnt the new tools from last 1 year but I am unable to lead the team in any direction. There are some new concepts in Computer Vision world now like Embeddings which is completely new to me I am struggling to catch up on anything.

Our product is going live very soon, so the issues and pressure have started to grow. I am not even able to build any relationships with the real stakeholders in the team. They all love my other teammates and thus keep giving them work. Whenever I try to talk to them about any issues I do not get any encouraging reply, it feels like I am giving very basic suggestions.

Can anyone advise me on how to handle and perform well in the team and above all feel recognized in the team and organization? I am pretty sure many people here would have changed technology and should have faced similar situations , many would have recovered from this situation.

I always have very high standards for myself and have always been recognized as so in my previous companies. Lately, I feel I am not feeling very proud about my work, and I feel that is the main issue. I need some advice to improve in my field and in a consistent way.

Show more
Posted 10 months ago
218 Views
5 Comments

Learn About Learning Quickly

The ability to learn quickly separates high-performing software engineers apart from the rest of the software engineers. This is an important skill because of how fast technology evolves. Think about all of the new frameworks that are constantly being introduced or new concepts that you have to pick up on. Not only that, you have to learn about business needs, but you have to be adaptable enough to learn when business needs shift.
It’s important to maintain a clear mind for creative thinking and good decision making. There can be a lot of facts, but you can always look them up at any time. Try to understand concepts at a higher level. This can be especially effective to prevent you from getting overloaded with work.
Rapid learners excel at problem solving. By learning quickly, it’s easier to debug complex code because you can understand how different components in a system architecture can interact with each other. Engineers who prioritize ongoing learning cultivate a growth mindset.
A growth mindset is a belief that one’s abilities and intelligence can be developed through dedication and hard work. This is in contrast to a fixed mindset which is the belief that one cannot change the abilities and intelligence that they are born with. A growth mindset encourages individuals to view challenges as opportunities, and it fosters resilience and a willingness to take on new challenges. Embracing a growth mindset involves being open to learning new information and leaning into problems that feel uncomfortable. Individuals with a growth mindset are more willing to accept feedback from other people.
There are various strategies you can use to learn more quickly in a software engineering role. It’s important to focus on hands-on coding and learning by actually doing the work. This means that you dedicate focus blocks where you can code or learn more about something. Leverage the knowledge of your peers by setting up 1:1 meetings with them to learn more about the codebase. If you can find a subject matter expert, they can help you fully understand the context behind a certain implementation.
Be careful about going down learning rabbit holes. it’s important to ensure that actual learning and retention is happening. Make sure to take notes and constantly review your notes or the knowledge will get stale. Taking notes can help you to ramp up quickly at a new company. Make sure to immerse yourself in the codebase and start to run the code and intentionally break things to get a better understanding of how things work.
The ability to learn quickly is a transformative skill in the software engineering world. Rapid learners not only stay ahead of technological trends, but they also contribute significantly to the success of their teams and companies.
Show more